DNS is probably the wrong word. You want some new method of name resolution, not DNS.

The thing with DNS is that it actually works pretty well as a distributed system. There are a bunch of different people responsible for different TLDs. If the operator of one TLD is censoring you, you can use a different one.

There are really two primary concerns with DNS. The first is that even if you have a domain using a TLD whose operators are unwilling to censor it, local DNS resolvers can still try to block it. This is not that hard to fix; either use a DNS server in a different country or (if your network blocking non-local DNS) do your DNS queries over Tor or some other secure proxy. It's also one of the things that DNSSEC or DNSCurve are supposed to prevent, if anyone would ever get around to implementing either of them. So this is solvable but non-ideal because it requires all the individual end-users to do something.

The second problem is that ICANN doesn't allow just anyone to operate a TLD, which means that the TLD operators themselves become choke points. Then censorial entities who see a TLD operator refusing to censor can put pressure on them (or their home country's government) to try to force the censorship.

So what you want is really to replace ICANN and the TLD operators with something more distributed, but the question is, with what? If you want a memorable but globally unique name then you need some method for everyone in the world to agree who it is that name should refer to. Right now the method is "if the name ends in .com, it refers to who Verisign says it does" and so on for other TLDs. You have trusted entities who can authoritatively determine who controls the domain.

I think (someone correct me if I'm wrong) that namecoin is trying to fix this with something along the lines of bitcoin, where whoever uses a name first gets to keep it. The problem there is that you need a way to make sure when it becomes popular you don't end up with a land grab and all the reasonable names end up in the hands of scammers and squatters, and I'm also not sure how they're addressing transferability and abandonment.

Just thinking out loud here, but how about this: Create a version of ICANN that works like IETF. No relationship to ICANN other than to refuse to issue TLDs that have already been issued by ICANN (and hopefully vice versa). Then, if you want a TLD, you can go to this group of people (who are maybe people like EFF members or well-known security researchers or activists) and they come to a consensus about whether you should get the TLD. So if EFF asks for ".eff" they get it. If ACLU asks for ".aclu" they get it. If La Quadrature du Net asks for ".lqdn" they get it. If Debian Foundation asks for ".debian" they get it. FSF gets ".fsf" on and on. But if some scammer asks for ".bank" they can go pound sand. Maybe make them sub-domains, so you end up with ".eff.foo" and they all end in ".foo" (insert whatever you like) to reduce possible collisions with ICANN. The idea will be to have domains outside the control of ICANN or anyone in particular and issue several hundred to generally well-known and trustworthy entities who are likely to resist censorship efforts. Then those entities can issue "wikileaks.aclu" and "wikileaks.eff" to wikileaks etc., so censoring them requires censoring all the anti-censorship organizations.

Once the working group assigns a TLD, they no longer have any involvement. They don't operate any technical infrastructure. All they do is publish the name of the domain and the public key of the entity it's assigned to (which can be used to sign domains in the TLD), to serve as the authority for resolving namespace collisions. Once an assignment is made it's permanent and irrevocable. The assigned organization's public key gets published and browser and OS vendors start including it and using it to authenticate domains in the TLD, resolved using whatever distributed system you like (that part is basically a solved problem) to map names to addresses.