I think the main problem is that I can't send out on a socket or a regular network message before the port used in NAT is detected. Both require a connection first, which can't be established before I send something out on a socket or a network message to get the NAT to open the TCP part also. If I connect from the device I want the get through the NAT as a client, I connect to the receiving device's chosen port, I can't specify which port I want to use for the sending device, only which port to connect to. To sum up, if I bind the interface/port used for opening and detecting a port with UDP to a TCP connection, this connection can't be connected to before it has sent data out, which is impossible because it requires a connection in the first place that can't be established because no data has been sent out thus the TCP part of the port is not yet opened.
13/0