Since you're using DHCP why don't you just renumber everything to be in the same subnet? Make the change, release, renew, voila!
There are other alternatives. You could just widen the mask that you're currently using. Say instead of 255.255.255.128 you could open it up to 255.255.255.0. Or whatever's appropriate.
Lastly, you could just write static routes for the other subnets.
For example, on my home network I use a Linux box as a router. I have a internal network of 192.168.1.0/24 (aka 255.255.255.0 netmask).
The problem tends to lie in that I have a default gateway of 192.168.1.1 which is my internal interface. It in turn routes everything to the outside interface. The problem arises if my DSL line or my outside interface fails. Things will eventually route over to the 192.168.1.1, but it takes some time for it to give up on that and fallback. So I added a static route that says everything for 192.168.1.0 goes through 192.168.1.1 first.
In Windows the statement would be written as:
route ADD 192.168.1.0 (the desitnation) MASK 255.255.255.0 ( the subnet mask) 192.168.1.1 (the gateway) METRIC (optional)
So the whole statement looks like:
route ADD 192.168.1.1 MASK 255.255.255.0 192.168.1. METRIC 1
You could do something similar for your different subnets.
Personally I would just make the mask big enough in your DHCP software to assign out the number of IPs that you need, release, renew, and be done with it. A much more scalable solution in the long run. It's also less maintenance and easier to troubleshoot. Don't get me wrong, there's good resasons to subnet (reduce broadcast storms, more control, etc), but in given the explanation you've provided I don't see why you would want to keep this arrangement.