How about using your destination site selection criteria to perform NAT via netmap / masquerade of source addresses? With that you will be able to have distinct policies, i.e. instead of 172.24.0.0/16 ↔ 192.168.0.0/24 you could have 10.0.0.0/16 ↔ 192.168.0.0/24 for one site and 10.1.0.0/16 ↔ 192.168.0.0/24 for another.
I don’t know how netmap affects connection tracking, hopefully it just works. But watch out for connection-state=invalid packets being dropped, just in case.
I still haven’t found the time to try it, but I wonder two things.
What do you mean by tunnel-1 matching
if the destination address is always 192.168.0.0/24 how would the router will distinguish when I want to go through tunnel 1 from when I want to go through tunnel 2 ?
[1] is related to [2]. You need to come up with a criteria to determine which of the 192.168.2.0 networks you want to reach. Once you have that, the nat rule will change src address to match specific ipsec policy.
Perhaps it is possible to map destination address such as that 192.168.2.0 would appear as either 10.0.0.0 or 10.1.0.0 (depending on the tunnel). However, I’m not sure what firewall rules are needed for that, see the Packet Flow reference. On input you want to mangle before policy matching and on output you want to mangle after policy matching.
Again, all of these is just an idea.
I see that similar question was discussed here before, did you try any of the solutions?