For example, if blocks were stored in nodes containing all transactions with a certain address. And the tree of those nodes was organized by address such that any address could be looked up quickly (and requested quickly from another network node).
I think blkindex.dat already contains something close to what you are describing. The internal structure used is a B-tree (if I recall correctly, the Oracle DB Documentation website is down at the moment). As you can see the blkindex.dat is about 1/3 of the size of the raw blockchain.