We already solved the peer-to-peer solution along time ago - it was called TCP/IP.
At least, The internet was supposed to be peer-to-peer. It was for a while. Hosting data yourself - possible because your local computer was an equal peer on the network - worked wonderfully.
Sharing some photos with a friend was as easy as sending them a URL[1] to your local server. Yah, it slowed down your internet every time someone wanted to access the data, but that was fine because you only sent it to a couple friends. Better hosting was only needed if you wanted a larger audience or if you had some special requirements.
Unfortunately, a lot of people - either intentionally or from ignorance - ended up conflating "NAT" with "firewall" and generally popularized the idea that giving up your status as an equal peer on the internet was important "for security". This became the excuse to put off IPv6 until v4 addresses started to run low which took over as the reason to hide everybody behind a NAT.
A common response to this is that setting up a server is still technically complicated - the average user still won't understand how to setup Apache or how to configure DNS. Even with proper addresses, these technical issues will stop self-hosting from becoming popular! This used to be true, but... software gets easier to use over time. The only reason we haven't seen progress easier to use server software is.... who would run it? The people who understand NAT enough to bypass it don't need "user friendly" server software, and everybody that needs it cant access their server form the internet.
sigh - Walker's imprimature[2] was right. NAT was (or will be) what reestablishes barriers to publication and turns the internet back into cable tv.
[1] Traditionally, the "URL" was actually an IP address, and the file server was probably anonymous fTP.
[2] http://www.fourmilab.ch/documents/digital-imprimatur/