For start, do something with fasttrack, either disable it or make it apply only to connections using default routing table. It’s your main problem.
Then for the mangle rule, I’d move it up and make it mark connections (wan2_conn) instead of marking routing directly. What you have now should work too, because connections will get marked by first response packet, but this should be more clear.
To use gateway from dhcp, you can make lease script and update it from there. See either manual or simple example.
To make service or router work from both WANs, add the same route marking rules you have in chain=prerouting also in chain=output.