The underlying problem is that Sync is not robust enough. Any error on a record seems to block other Syncs in the queue.
Rows with Sync Errors should be skipped to allow the good records to be synced, then you can just reset the bad record, rather than losing a whole lot of rows in the sync queue.