An easy approach is to resolve the address each time it tries to update, add the address to an address list with a timeout and use a prefixed mangle and routing mark to route traffic via the proper interface.
For example :
local currentIp [:resolve www.ovh.com]
/ip firewall address-list add list=dyndns address=$currentIp timeout=20s
/tool fetch url=XXX
You can then keep a static set of rules to mangle and route the traffic
/ip firewall mangle add chain=prerouting protocol=tcp dst-port=80,443 dst-address-list=dyndns action=mark-routing new-routing-mark=via_wan2
/ip route add dst-address=0.0.0.0/0 gateway=x.x.x.x routing-mark=via_wan2
If your eth2 gateway changes you need to put an on-lease script in the dhcp-client for eth2 to fix the gateway. Somthing like
script="/ip route set gateway=$gateway [find routing-mark=\"via_wan2\""
You better check if the default variable for the gateway is actually $gateway in the documentation.
edit:
BTW, ping, ssh, telnet (although its broken post 6.45.6 or so) support the routing-table parameter to route traffic.
I've already requested they add it to tool fetch without much success, maybe more people requesting would put it on the road map.