OK just to update, I've sorted it, but I'm not exactly sure how, or more specifically why it wasn't working in the first place.
The routes I posted are correct for my purposes, the interface you select has to be the one the destination network can be reached on.
I can only assume, being tired, human error was to blame, entering the wrong gateways either side or something.
In response to the last issue I was having, again being tired and stressed, I wrongly assumed m0n0wall would respond to any pings on the same interface. Of course, if the source IP of a ping isn't in its routing table it won't know where to send it. Add the correct static route on the destination box and it responds as expected.
Thanks for looking, and hopefully this can be of some help if anyone else gets stuck.