What do you mean by "rinetd mistakes the eths"? Do you get an error on starting rinetd? Does it start but not listen as you were expecting? What configuration did you give it on each machine? (you should add this detail to your question).
The correct syntax for the two redirects you describe is:
89.40.x.y 8001 85.121.a.b 8001
85.121.a.b 8001 86.34.c.d 80
but if both the 89.40.x.y and 85.121.a.b are associated with interfaces on the same server, would not the single line
89.40.x.y 8001 86.34.c.d 80
do the trick?
EDIT: as you say you are looking to have the traffic to 86.34.c.d to travel down the route associated with 85.121.a.b then you have a routing issue. You can force packets for a particular address to be routed down a particular interface with:
route add -host 86.34.c.d eth1
If you run the command
route (with no params) it will display your current routing table so you can do that before and after to see the difference.
route del 86.34.c.d will remove the new route. This assumes that the equipment traffic from eth1 eventually travels down is able to route packets for 86.34.c.d to the right place.
To make the change permanent (so it survives a reboot) you need to add the command to an appropriate place in your startup scripts (the best way to do this depends on which Linux variant you are running). Don't do this until you have confirmed it works as desired though - you don't want to accidentally change the routing table so you can't get to the machine from your current location and have the incorrect route reapply after reboot.