I think the reason because p2p fails is incentives. Everyone want to take, pretty noone want to give, and so pretty noone want to offer inbound connection to strangers.
Bitcoin is a strange creature with inbuilt incemtives that create a p2p that scale and works (even if the incentive to run nodes for others are weak, but pretty work in the end).