If contracts are built into the code already, what is to stop someone from creating a transaction script that is very cpu intensive to verify, so that some computers accept the block with it and others do not?
There are only a handful of types of scripts that are accepted. The code must be modified to accept more types, which happens occasionally. But you can't just write arbitrary scripts.
Also, I don't see how being CPU intensive would cause some computers to reject the block.