@viragomann firstly thanks for the reply, forgive me for the dense paragraph. I did setup a P2 per subnet. In any case I have in the mean time found a solution (which happens to coincide with what you suggested):
Firstly I switched from BiNAT to simple NAT for each target subnet and then I NATted on a single address per each subnet like this:
Local Subnet Remote Subnet NATed IP
172.20.48.x/24 10.10.x.x/16 10.10.12.201/24
172.20.48.x/24 10.11.x.x/16 10.10.12.202/24
172.20.2.x/24 10.10.x.x/16 10.10.12.203/24
172.20.2.x/24 10.11.x.x/16 10.10.12.204/24
This way the packets from both subnets are routed and NATed through the IPSec tunnel correctly. However, even though I also added a local static route as per https://docs.netgate.com/pfsense/en/latest/vpn/ipsec/access-firewall-over-ipsec.html to be able to be pinged by the other end for monitoring, the remote pings do not return. This may be a limitation of the above NAT setup in the IPSec. At the moment this isn't a major issue but I should find a solution for the remote monitoring setup.
Notes:
The BiNAT solution works only for a primary Network (the first P2 Network encountered in the list), any subsequent different specified P2 network subnet is ignored - packets reach the firewall LAN interface but are not routed to the IPSec interface.
I have not attempted a routed VTI IPSec approach which I suppose will work fine also, but requires a more elaborate configuration to setup the relative IPSec enabled interfaces, firewall rules and NAT/routing. I may take a shot at this in the future as with the above setup it's hard if not impossible to have a fallback/secondary IPSec gateway configured if the main one dies - this would require the VTI routed approach if I'm not mistaken.
Some additional references to IPSec / NAT issues and workarounds which seem to be relevant:
https://forum.netgate.com/topic/155132/problems-with-routed-ipsec-vti/6
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248474
Cheers