1. If you consider that very few conversion types actually need the 90-day window:
First call the ConversionTrackerService, request all conversion types. Then determine the largest conversion window, which is in field ctcLookbackWindow. Note: if you also synchronize ViewThrough conversions, you should also consider viewthroughLookbackWindow!
You could now use that maximum instead of 90 days. It's not perfect, because the setting may change between syncs.
Another solution is request an account report, only aggregated to individual days first, and compare the conversions in that report with the contents of your local database - you should re-sync from the oldest discrepancy again.
2. You can use multithreading or multiple machines to request multiple reports at the same time. You can also use asynchronous communication, but not all libraries support that - at least the .NET library doesn't.