There's no help from the fact that you're using "still 99%"99% TCP" – as long as it's not 100% TCP, hosts still won't automatically know how to speak it, so it's the same as deploying a whole new protocol (like IL or SCTP). It's, and it's a similar story to past attempts of "extending" IPv4 by increasing the 32-bit address fields: it'd only be compatible with likewise extended hosts and gateways, so it's the same amount of effort as moving to a whole new protocol.
Rather than modify the basic header, a better way might be to use TCP optionsavoid having to carry the additional 16+16 bits – which still would only do something for hosts that recognize those options, but at least you're doing it in a way that currently deployed systems already expectdeploy IPv6.
(NoteBut note that the number of TCP ports available is per IP address, not globally per host – if you have two IP addresses, you can use the same port number for two different sockets, so it's easier to just add a second IPv6 address. And in theory it should be "per address-pair," so even if you run out of local ports when connecting to server A, you should still be able to use the same local ports for connections to server B...)
And if you try to avoid these problems by reusing the existing TCP protocol number for your modified-TCP, it'll make things much worse instead – firewalls will misinterpret your 32-bit port field as the original pair of 16-bit fields, etc.
Rather than modify the basic header, a better way might be to stay with standard TCP and use TCP options to carry the additional 16+16 bits – which still wouldn't help with hosts or gateways that do not recognize those options, but at least you'd be doing it in a way that currently deployed systems already expect. (Multipath-TCP is being somewhat successfully deployed this way.)
However, many of these problems would remain even if you used TCP options for the additional port bits. For example, existing NAT systems would still only look at the low 16 bits of the port number, causing confusion if e.g. ports 80 and 65616 are used at the same time.