It's not so much that they
are far away from each other (though they are), it's the fact that they
can be that hurts parallelizability because you need access to a lot of data. The way to handle this is to maintain an "output set" of all unspent outputs; you add every output for each transaction and delete every output that is referenced in each transaction. Maintaining this data structure (which requires random insert/delete access in roughly equal and enormous proportions, which is a nasty data structure problem ... not sure you can do better than a hashmap) is why you have to go through the song and dance I described.
To see what's involved with verifying the blockchain, you should check out my
high level overview and also check out the Bitcoin Wiki pages on
transactions and
Script. It's a bit involved.