Since you have to do an open to start talking to a hashname, and you can't get the public key to send an open until you have connect/peer through another hashname, is there a way to tell if you have stateful NATs between the two of you? 

This might affect keepalive packets, and would also indicate whether it is 'worth' caching their information, since you can connect to them directly without going through an intermediate peer.