This is a fairly common problem with incoming DID's. Here is what you might want to do.
When the telco assigns DID digits to a trunk, they build a "route index" which tells their switch what digits to send.
What they do for us is they have a different route index built for all DIDs starting with 9's. They switch the 9 to an 8 and send me an 8 instead of a nine.
In other words if the incoming DID number is 9956, they send me 8856 instead, so the user would dial 9956 but I would receive 8856 which does not interfere with my routing tables. Then, I map the 8856 digits to whatever target line I want to and all is well.
That is how it is done.