I'm not sure that you would like the performance hit you might take for configuring an iRule to route traffic for 300 Pools.
The routing logic would have to run for every request, so you would pay for the functionality with latency.
It might be acceptable (some of the others can might be able to verify), but I haven't ever attempted anything like that.
For the incoming URI modification, you could do that with a string map replacement and it should hold and run fine unless you are doing some type of redirect, and then you would need to rewrite the Location in the Response Header.
http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/339/iRules-101--14--TCL-String-Commands-Part-2.aspx