Yes it is possible to route by source address. There isn't much documentation out there about these features of the linux kernel and what there is could be improved.
I read some of this howto a couple of months ago.
Take a look at sections 3 & 4. It doesn't really go into a lot of depth and there are not many examples, but you can get a idea of how it works.