You might check out the Ignition Extensions module which has an isAvailable() expression that checks that a tag path is both found and enabled.
I would say this is fairly normal, though there could be an argument that you might want to refactor the template into more less generic templates.
For instance, while it is possible to have a template that handles both a motor with a starter and a motor with VFD, I would create two separte templates. ( A bit of a contrived example, but not invalid.)
From a performance perspective, you really don't want to be wasting a lot of processing on properties that are not going to be used. In some situations it probably isn't going to be that impactiful, but in others it might be very impactful. There is a balancing act there between performance impact and development/maintenance time/work. Personally, I try to minimize the number of properties which are being processed needlessly.