There is nothing wrong with the code, but you missed something.
First, I would code it like this:
(00xx.S3|<0:0055>xx.S3|<005516>[2-9]xx.S3)
International, you don't have to remove 00 then add it back.
It's standard here to use xx. which requires at least one more digit.
x. will match zero or more digits.
When you only add digits, the colon is optional.
When the dialed number matches a rule ending in x. there will be a ten second delay before the call is routed.
S3 will override the 10 second delay with 3 seconds.
When you dial a number the Phone Port DigitMap validates the number.
Rule (Mpli) points to the Primary Line DigitMap.
If you dial 8005551212 it is changed to 0055168005551212 by the Phone Port DigitMap.
The modified number is then passed to the Phone Port OutboundCallRoute.
Rule {(Mpli):pli} will compare the modified number with the rules in the Primary Line's DigitMap and route the call out the Primary Line if a match occurs.
0055168005551212 does not match any rules in the DigitMap, so the call fails.
International numbers should work, because these are not modified.
To fix the problem use this DigitMap:
(00xx.S3|<0:0055>xx.S3|<005516>[2-9]xx.S3|0055xx.)
Now the modified number will match rule 0055xx. and the OutboundCallRoute will work.