Better still - screw DNS
Rather than "Screw ICANN", what about we screw DNS? - or rather, create an alternative that can be used in parallel.
Consider all the "OMFG We must block <domain> FER DER CHILDRENZ!" and "We must block <domain> to protect this business". DNS is a single point of failure.
What if we take the distributed hash table idea, as used in the newer versions of the Bittorrent protocol, and use that to locate resources - in other words, isn't it about time we move to Tim Berners-Lee's idea of Uniform Resource Identifiers (URI) rather than Uniform Resource Locators (URL) - why not specify WHAT we want, not WHERE we want?
Now, I am not saying "punt DNS and go DHT" - DHT is chatty, can be slower than DNS, etc. But what if we established a standard for using DHT to resolve URIs, and modified the resolver libraries to look for domain names in DHT *in parallel with* DNS? Also, what if we move up the stack, and let clients look for URI's as well as URLs in DHT, again in parallel with DNS?