> "free"
I'd suggest an OpenWrt compatible router. It's actually free (open source) :)
Great support for dynamic DNS too (obviously, it's just Linux): http://wiki.openwrt.org/doc/howto/ddns.client
And it turned out the thing I was describing (easy port forwarding for home servers) exists and is also supported by OpenWrt: http://en.wikipedia.org/wiki/NAT_Port_Mapping_Protocol