Mastodon is pretty cool.
You asked the kid in class to pass the note. He did so freely. You assumed he wouldn't open the note, but guess what... he totally opened that note. And now he wants to profit off the information.
The way Tox does it (and any network trying to work around this problem) is to locally cache messages en masse as close to the destitination as you can get. But as you can imagine that makes the bandwidth and power requirements of maintaining the network too streinuous to be competitive with a federated option that simply works when the always-on server is available or doesn't when its offline.
But there's the problem (why we didn't see something like this yet): No one puts many resources into the design of p2p-stuff. The competing, central solutions get tons of resources from big companies that try to make money with it. There is no company that tries to build something p2p because with giving away the control, they give away the possibility to make money out of it.
A working example of offline storage would be bitmessage (although I think It won't scale). A much more interesting development would be lake: https://media.ccc.de/v/34c3-8974-practical_mix_network_desig...
Peer to peer connections on web browsers are pretty good (assuming you have relays to get around router issues with shared IP addresses). And Javascript is generally fast enough for encryption (although I'm not sure what the random number generator situation is).
But we lack the ability to easily guarantee file contents, which makes delivering encryption software more suspect. Additionally, data storage is still very unreliable. It is difficult to share information seamlessly between multiple browsers without a server, storage limits vary between browsers, data can get deleted for weird reasons. I've advocated for a while that users probably should be able to grant pages separate read/write access to specific files and folders on disk, but that's obviously a tricky decision to make and implement.
The Same Origin Policy obviously comes with security benefits. But it also means that if you share a 3rd party link, there's no way to look up metadata about the link without a proxy server to bypass the policy. Building something like an RSS reader in purely clientside Javascript is impossible because you literally won't be able to request many of the RSS feeds.
It can be a little bit surprising when you dig into all of the theoretical stuff that's possible with clientside Javascript to discover exactly what the areas are where the web is behind native. They're usually not the parts that get the most attention.
So you're stuck with replicating that data out to all the peers, which means you've just lost control of "your" data again.
Most of the reason for centralisation is simplification. Have you tried running your own email server lately?
Shoehorning in cryptocurrency just seems absurd.
But on the other hand I don't think that it's really expensive. As in have a RasPi lying around at home that's keeping track of everything when you're not online. That should totally suffice for your own needs. If you have bigger needs or want to support the network (maybe even for a small compensation in whatever form) that's easily scaleable. Or think of bittorrent: It's incentivised that you run contribute back what you received. That works totally without compensation in cryptocurrencies.
About the simplification I'm not sure either. Have you tried running Gmail lately? (Not as client but as service ^^ I think that it's not quite straight-forward.) Once you have a proper working p2p network/algorithm/protocol I can imagine that it's easier to run for all parties.
I think most people know someone who does and we can start there. The first step is to make it really easy to host on a desktop (including addressing and NAT busting, both of which Tor provide).
A nice idea that sadly didn't get enough funding, and their creators eventually moved on.
It's AGPL though.
Check out what gnutella or the dat-protocol have to offer for reasonable alternatives.
The most success decentralized service is BitTorrent. It is decentralized and it is decentralized in client level. Though it also caused uncontrollable piracy, since it is too easy to spread any data using Bittorrent. I think a true decentralized social network to protect privacy should be a p2p app, not server to server federation.