You fail at IPv6.
By definition, end-users will get a 64-bit host segment with IPv6, which means you will always have at least a 2^64 address range, eliminating the need for NAT in most consumer markets. Consumer routers can simply implement the same firewall rules they do today, but they'll get a load off their back on preserving state for NATted connections.
Local connectivity can be done with link-local addresses or the site-local ones if you really need to subnet the local IPv6 addys.
And contrary to what this article's poster said, you *can* set up static addresses on IPv6.