The original idea of the internet was a way of getting all the computers to connect. At this point that issues has been solved so its time to go back to the original design concept and rethink it from the ground up.
Breaking the bound between the addressing stack and the control stack leaves some interesting possibilities.
Open addressing stack - IPv4, IPv6, Mac Addressing or whatever could all be used in harmony. The ISP would need to supply you with some form of addressing stack. How this would or could work is a difficult problem to solve but would open up the chance for the best technology to win.
Control stack - TCP, UDP or whatever could be used as the control layer over top of the addressing space. Some additional features like multicast would be a huge help.
Domain names - I don't even know where to start with this issue. It's largely out of control. Virtual hosts are certainly not the answer to this. One name should be bound to 1 address and if you want more then one name then you will need to use more addresses. The names are free the addresses aren't.
At this point most of the world is connected to the network or has access to the network. Distributed networking like torrents might be a better place to start looking for the answers.