If all computers were publicly reachable it would be trivial to send files peer-to-peer.
I guess IPFS can be an interesting solution to this problem.
NAT punching is a thing, but it makes the implementation of p2p a lot more complicated.
The world got paranoid, as any exposed port to the raw net is seen as an invite to worms.
WebRTC exists today, and it's quite good. It's not a technology problem, it's a matter of practicality. Mobile devices being reachable over the network 24/7 is just not realistic (connectivity falls off, battery considerations, etc.). I don't want my phone to heat up and come to a crawl because the video I just shared is being downloaded by three friends over LTE while I ride the train.