Hi Nick Pearce,
I think that the easiest way in this case will be to have separate templates with all the controls predefined in them. Yes, you will have a longer list of templates, but you will skip the coding, and you will maintain these templates easier. Then you can train your users to manually assign the right templates.
We have scheduled to use the Metafields approach for the page properties as well. Now, you can try to add a page property as described in the article Page Meta Data - Intercepting Sitefinity
There is no event raised when the template is changed, but I have logged this. We should really raise more events to which you can attach.
These are the only suggestions that I come up with so far.
the Telerik team