NAT is a stateful network function and incredibly complex to implement efficiently. NAT is never free.