Actually, the loop trick is really dirty trick, but if you’re really desperate, it could be used. Simpler solution would be to make dstnat in output available in RouterOS. It shouldn’t need new kernel, I found it mentioned in articles about Linux 2.4 and RouterOS has some 3.x, if I remember correctly. So it’s most likely there already and they probably just didn’t think that anyone would need it, so they didn’t expose it.
If you really need it, you can try sending official feature request to support. But if you want it for DNS, then better ask for what you really need and that’s Feature Request: Conditional DNS Forwarding. Dstnat in output would be only a workaround, slighly better than what we have now, but still not very good.