A big part of the difficulty is that you truly can't be everything for everyone, but you really need to be something for anyone. If you approach it as a distributed social networking problem (which is most of what I've seen) then you're really missing the indescribably large forest for one specific tree.
The blackbox I've focused on for this protocol is (arbitrary insecure physical bytestream in) -> [box] -> (arbitrary private, authenticated, integrity-verified bytestream out). We use networks to communicate between persons/services/things, not between IP addresses -- the right place to address the problem is between network and application.
It shouldn't surprise you that in practical terms, nobody outside of tech cares enough to use them.