Ummmm, I have just realised I have misunderstood Franks comment, since I was mostly thinking about file templates and he was talking about insertions, so I'll change my answer. I agree that substitution should happen when the template is put in the buffer not when Geany is started, for both types.
The option of substitute when the file is written can only sensibly be applied to file templates, but the above handles all templates uniformly.
Cheers Lex