thanks we ended up tring a few different reverse proxies to get this working and the one that got it all working was HAProxy running in TCP mode.
we now have seperate DNS records for VIEW and HORIZON pointing to or public ip and then from there HAProxy sends it to the relevant gateway. Then as you said we have the split-DNS handling the internal requests.
The good thing about HAProxy is that we should be able to load balance if we need to add another gateway for VIEW or HORIZON.