A simple description of iRules versus iControl:
iRules allow you to change the way individual TCP (or many other protocol) connections from a client are handled.
iControl allows you to change the BIG-IP configuration in a similar way as clicking through the admin GUI, but programmatically. It wouldn't be advisable to try to use iControl to interact with individual connections, in the same way you wouldn't want to try to quickly change the default pool of a VIP in the GUI in order to handle connections.
For your scenario, it sounds like you could potentially use an iRule and an iControl app to configure the iRule. If the routing information is fairly static you could use an iControl application which periodically checks the routing configuration from the database and updates a datagroup on LTM which the iRule references for selecting how to handle connections. Or if you can make the routing information available via HTTP/S, you could possibly use an iRule to make a request to the routing information web page and then handle the client connection based on that response.
If you can provide more details on the scenario and requirements, people here can try to give you more detailed implementation suggestions.
Aaron