reduce compile time by minimizing template instantiations

Refs #2439