I agree that the throttling of IB's reqHistoricalData() is quite annoying. Getting a good while of history takes forever, especially if you are pulling data for a lot of contracts.
However, I keep most of the historical data persisted in storage locally, and every trading day I just request the last day's worth of data and have it appended to my dataset. This doesn't take very long to update.
It is fairly easy and straight-forward to make a simple TWSAPI app to keep copies of the old historical data, periodically updated with new data every trading day.
At least, that's how I do it. I haven't found the need to subscribe to another data service for this. Perhaps your needs are different than mine though.