I have 3.0-3.2 machines and every one has the translation patterns as urgent priority. I know there were some changes in routing between 3.1 and 3.2 though.
Without knowing more I would say that your best direction is to assign the applicable gateways a Calling Search Space that has the partition of the internal phones above the partition assigned to your translation patterns. In fact, reading over your message, i would say that in every CSS you list the internal partition (partition assigned to DNs on phones) before the partition assigned to the translation pattern. In the event of a "tie", the highest-ranked partition in the CSS wins.
I'm unclear on the use of the translation patterns, but if they are used just for incoming calls (DNIS), then create a "gateway " CSS and a unique partition for the translation patterns that is only in the "gateway" CSS. This means no-one else can call the translation patterns (that partition), so the trans patterns are only invoked for gateway calls. Lots of options here.
HTH