Well unless he has an externally visible static IP address (and then you don't need the vm) it doesn't help OP's problem.
No, the bitcoin protocol only exchanges IP addresses not DNS names: https://en.bitcoin.it/wiki/Protocol_specification#Network_address
Maybe you can write a script that is called when your external address changed and restarts bitcoind.
It's time that IPv6 gets used and we can all have our own static IP address.
he can set a vpn and get a static address from a provider(actually you don't need to pay, a free vpn can provide to you a shared ip , that become basically static if you don't close your vm or your vpn program) while maintaining his actual ip, so i think a vm could come in handy