"1.c. Codified verification that can rigorously check if a transaction is valid or not for that particular template."
Would this be codified by an extended scripting language, or by hard-coded logic in the client? I think it has to be a scripting language, otherwise it will be too hard to get agreement to add new templates. We would need to create scripting extensions to allow a wide range of new applications. For BitDNS we would need the ability to look back in the block chain and check if a given name has been registered before.
I think that a scripting language would be adequate, however it would have to be fully unit-tested.
"3. Every transaction must still comply with the existing enforced network rules. Such as no, double spending."
In this view, the core logic of Bitcoin would check that blocks had the required difficulty, were properly formatted, and that their scripts all return true. Everything else would be done by application-specific layers.
Every Transaction still needs transaction fess, double spending is important to check at a foundational level.