I've not used onObjectValidate yet, but I've often had problems using Validation when there was a relationship to evaluate. It seems the validation happens before the relationship is evaluated for the current value. I wish I could tell you the exact sequence in all circumstances (anyone?).
Another way to accomplish what you want would be to use similar logic to filter the Value List of the popup. You'd need an unstored (important) calculation field, Get (CurrentDate), result Date (duh).
Include that in a relationship to the Templates, with the Customer calculation current date field as the source, targeting ≥ Valid_From and again with ≤ Valid_To dates (≥ ≤ includes today).
In a Value List, use the above relationship to show the TemplateID as the 1st field, Show also the Template name. Lower down in the dialog, Include only related values, starting from: Customer.
Then only the valid templates will show in the popup.