The solution is actually a bit more straitforward.
Ignore the iptables commands on machine A for now as that is about hiding your subnet 192.168.2.0/24 behind a NAT.
Instead focus on what is actually going on when you do a ping command.
When you send a ping to a remote ip you actually need to inform both machine A and machine B how to get the respective networks 192.168.0.0/24 and 192.168.2.0/24.
You got the first part right about telling machine B that in order to ping anything on 192.168.2.0/24 it has to go through 25.61.150.71.
That is what you did in the command:
machineB> sudo ip route add 192.168.2.0/24 via 25.61.150.71
This is possible since machine A and machine B is on the same subnet provided by Hamachi.
But any ping command also needs to send a reply back, so how does the machine A know where the network 192.168.0.0/24 is located?
You can tell machine A that the subnet 192.168.0.0/24 is located behind 25.72.151.72.
This leads the the following command:
machineA> sudo ip route add 192.168.0.0/24 via 25.72.151.72
However we are not quite out of the woods yet, since even though machine A and machine B knows where to send traffic to any host belonging to either net we still have the challange of how does any other host belonging to the 192.168.0.0/24 know how to contact 192.168.2.0/24?
If machine A and machine B is not the default gateway for their networks, then we need to add a static route to the default gateway on either net.
For machine A's default router we need to tell that 192.168.0.0/24 is reachable through 192.168.2.160.
Similar we need to tell machine B's default router that 192.168.2.0/24 is reachable through 192.168.0.103.
After all this is done you should be able to ping from any host belonging to either net to any host belonging to the other net.