I completely agree on the semantic value of the data structure, and since I'm likely going to need to have bond experts debug some of the calculations and so forth, I'd definitely prefer to stick to the templates.
Can you give an example of what you mean? I can't (or won't ;) conceive of such a system, where critical business logic gets put anywhere near the templates (IOW, the M/V/C is getting a bit muddled for my liking). Shouldn't you be using a Proxy or Iterator (or *something*) to achieve cleaner separation?