The two tricks mentioned in the article and apparently implemented in YATE are a little hokey. (Albeit implemented in many other places as well.)
First, it's very easy to steal the session, if the peer is simply assumed to be whoever sends RTP to the correct IP and port first.
Second, sending dummy packets every 30 seconds is extremely expensive. Using SIP over TCP would yield much longer timeout intervals; however, scaling many simultaneous TCP sessions is a little trickier. Also, another, perhaps safer, way is to simply force the client to re-register every 30 seconds or so.
For the ultimate NAT traversal solution, you should check out ICE (http://www.ietf.org/internet-drafts/draft-ietf-mmusic-ice-09.txt). Anything short of that are simply hacks.