I wrote a number of papers about p2p financial contracts before Ethereum or related projects ever even came out. Fact is, we can do this fairly simply with something like NXT. I think NXT is very compelling because it's a complete rewrite and the code is CLEAN java. Innovations will happen fairly quickly in NXT(amof they ARE happening). So we can support complex contracts simply by making the kernel modular, having a TYPE field in the TXs and the TX is processed by the module according to type. They already have a namecoin clone and bitmessage clone in there. No need for complex turing complete support. Most importantly the system remains SIMPLE, PEER TO PEER, and accessible to the community.
That's a relatively centralised approach, though, in that the NXT core developers have to agree what the TYPE field means, and approve the code that goes in to support it. I imagine a goal of Ethereum is to allow permissionless innovation. They don't want arbitrary limits on scripts and they don't want application developers to have to get permission from anyone before they deploy. It's similar to the Bitcoin vision where you don't have to get permission from a credit card company before accepting payments.