You're doing it wrong if your service generates thousands of dust-sized outputs. You need to consolidate your outputs as you go.
I assume that a transaction under your current model is like this:
Input (x1):
Payer Address (X BTC)
Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (100 satoshis)
Payer Change Address (X - Y - 0.00000001 BTC)
What you should do is to keep the Service Wallet Address accumulate the 100 satoshis as you go:
Inputs (x2):
Payer Address (X BTC)
Service Wallet Address (Z BTC)
Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (Z + 0.000001 BTC)
Payer Change Address (X - Y - 0.000001 BTC)