I also thought of your idea of connecting to closer hosts a few months back. Have a look at this thread, which also has a reply from a LimeWire Developer.
<
http://www.gnutellaforums.com/showth...&threadid=9831>
I don't know about the caching content though; you would need to have no way of knowing what is being stored and no ability to control what is stored, sort of like a super Freenet node.