Why not just go with IPv6 and get rid of all the crap that's become necessary to keep IPv4 going? Stuff like NAT break things and CGNAT even more things. Because of NAT we need STUN for VoIP and some games. So, it's hack upon hack just to get around the IPv4 address shortage. On top of this, IPv6 cleans up some of the things in IPv4. For example, ARP predates IPv4 and was used because it was available. With IPv6, the functionality of it has been rolled into ICMPv6 with some other features added. Other things improve security and more. According to Vint Cerf, the guy who created it, IPv4 was intended only as a proof of concept and he expected the final protocol would have a much larger address space.
With my ISP, I have a single IPv4 address which requires NAT to support multiple devices. With IPv6, I get a /56 prefix, which provides 256 /64s, each of which contains 18.4 billion, billion addresses. NAT also breaks the end to end transparency, which the network gods had intended. 😉