The one thing I don't like about using dst-nat to do the same thing is lacks of failovers. In my picture above, if one server failed/unreachable, routerOS will retry with other servers in the list. With dst-nat, if the server specified in the top failed/unreachable, routerOS will not proceed to use the next dst-nat rule, causing the domain resolving process to fail.
That's not true at all.
Suppose the LAN clients are assigned to use DNS servers 1.2.3.4 and 1.2.3.5
In this case, you would make dstnat rules like this:
chain=dstnat protocol=udp dst-address=1.2.3.4 dst-port=53 action=dst-nat to-address=1.2.3.4 to-ports=5353
chain=dstnat protocol=udp dst-address=1.2.3.5 dst-port=53 action=dst-nat to-address=1.2.3.5 to-ports=5353
Leave the dst IP address alone and change only the dst port. You have to make one rule for each dst address, though.
Or, you could be sloppy and do it with one rule:
chain=dstnat protocol=udp dst-port=53 action=dst-nat to-ports=5353
You may also wish to add the "in-interface=LAN" criteria to the above rules to limit them so they only apply to traffic from your LAN.