In a truly decentralized system, you're not going to be able to have readable unique names without collisions. Why? What happens when the network splits, then people on either side of the split setup the same username. How do you rectify this when the network rejoins? How do you know that the network has split vs. a node going offline (if you wanted to do something like shut down new usernames until the network was whole again)?