I think that there is more power available in the templates than you think. For starters there is an EXEC_ADD_IN function macro that allows calling an arbitrary function in an addin, written in any language that can interface with COM.
There is the capability to write a function template. Look at the DDL transformation and the ForeignKey template and how it's called from the connector template.
Then if there's a macro that you need that is generally useful send in a feature request. You'll probably get it within a couple of builds.
As for functions available in the transforms but not the code templates. They're not. They're documented as part of the transformations because they are crucial to transforms, and using them in code templates would break the synchronisation between model and code.
1) I think most developers/architects would know XSLT, surely? It has been core to what we do for years!
I for one have never learned XSLT. I've never needed to. On the other hand, the templates are just if-then-else blocks, looping over elements and string values.
I think most programmers should know these concepts and be able to apply them very easily to a different syntax, surly? It has been core to what we do for years!

Maybe that's not true of everyone, but it's a simpler concept to understand IMO than XSLT.
For the record, I know that the code/transform templates are not perfect. I know they have no use outside of EA, but that doesn't mean you'll never be able to use it again.