It's all about the automation.
In RL, there are a lot of "John Smiths", and it would be non-trivial for a system to figure out which one you wanted to call without some serious hinting (like access to your Facebook, LinkedIn, Twitter, G+, etc. accounts), and it might even have to access a private list of names/numbers to figure out that you probably want the John Smith who works with Alice Bell (an entry in your phonebook)...
if its someone you have him in your friendcircle->app
I believe we need a proper open identity system in general but this could be a start.
The solution wont be facebook.com/nickname nor vox.io/nickname
It will be providerOrContextOrWorkplaces.com/name maybe
The places I've seen that give automatic email addresses have used a formula like first initial, last name, autoincrementing number. I think this is a pretty good system, but if you go worldwide you're going to get nice big numbers - entering name and number almost exactly like you do already. But if you misspell something based on a verbal communication it breaks harder.
How may John Smith's are there in your country ?
So, you'd need a nick registry, like domain names, and you'd run into issues with your friends that have "common" nicks having to register and use a different name. I think this merely trades one well-known set of limitations for a much different and less understood set of limitations without actually truly solving anything.
I guess you'd work around that by having a local address book on the phone, but now I've barely gained anything from that, given I already have a local address book on my phone.
I have a Nokia 6303. I press a couple of buttons and I'm calling the person I want. It's so unbelievably solved.
Buttons? Bah ;)
Thw fundamental problem is the same Numbers are a techincal layer i as a user dont zo know about