I have a ESXi server that has just one ip, which is assigned to the host. Is there a way to map certain host ports to the vm's that it runs, or should I just order extra ip's at my hoster?
You can set up a router VM and confiure NAT to masquerade all the traffic with your IP.
Apparently there's a cisco product called Cisco Cloud Services Router 1000V, which can do that. There's a free limited version of that. Or you can do it with almost any OS you like.
Of course you should keep in mind that in case router VM will be switched off - you won't have an access to ESXi host to bring it back up. And in datacenter environment it's really tricky to remove the IP from esxi host to put it to router.