Is there a way to upgrade a theme without losing custom templates?

Child themes might be your best bet.