There is a community forming around gun's end-to-end crypto capabilities that help ease the pain of building P2P apps. The latest contributors have added first class support for using the native Web Cryptography API, which we demo with a user account system here (
https://youtu.be/ik_dqXBMBHw ), based off our design explained here (
http://gun.js.org/explainers/data/security.html ).
Like you say, these are now understood and solved problems, it is just a matter of using them and building apps that are more sticky than centralized apps. Unfortunately, us p2p-crypto people kinda suck at making "sticky" apps, so I feel like our greatest hurdle is roping design/product people in. That will be the killer challenge to get mass adoption of p2p crypto based apps, the psychology, not the technology.