struggling with the same here
It's not only about IP reputation. Try Mandrill with shared IP. They have mostly 95/100 reputation according to SenderScore but still oftentimes happens exactly what you described. Moreover, it can happen even with <0,01% spam complaint rate.
My educated guess would be that the higher spam score your letter has, the less identical messages you can send, which leads us to the solution... spintax everything. Spintax tpl body, subjects, from name etc.
By the way, what niche you are in? How come that you get 5% "marked as spam" rate? I thought it was impossible lol
For one tough niche I am currently trying the following:
1. Spintax email body, at least 10-20 times more possible combinations than the number of recipients. E.g. 10k list = spintax for at least 100k possible combos. The more, the better.
2. Spintax subject, the more combos, the better
3. Randomize "from name" but match it with "from email"
4. Use different proxies for passing emails from central mail application onto Mandrill as Mandrill doesn't hide your app's IP. Use dev hostings for creating proxies they allow to quickly deploy and then shut a lot of proxy-servers with identical configs.