If you want to host IPX traffic over TCP/IP you just wrap it in a UDP packet.
Compatibility is really just an expression of will and attitude. Its true that IPv4 and IPv6 don't communicate directly but there is an IP version number field at the start of the IP header which identifies which one you're using. This enables the stack to route the traffic to the appropriate IP layer where it will get unwrapped and presented to the same -- note, the *same* -- upper layers.
Life is complex enough without Marketing types spreading thick layers of FUD around. The move to IPv6 has been slow because its clunky, especially if it incorporates source routing fields in the frames. For those of us working with smaller scale localized networks (that use -- Gasp! -- NAT) IPv4 works just fine and has the advantage that our local devices stay local, they can't be addressed by the greater Internet without the say so of the edge router. (....I'm old school, I like my networks, like by protocols, layered.....) So let's just use IPv6 where its appropriate.