Hola TaaDow.
Lo que más lentitud le causa a ese ciclo es que en cada pasada estás llamando al método ApplyUpdates y éste internamente dispara la apertura y cierre automáticos de una trasacción —¡una transacción por registro!— en la base de datos destino (suponiendo que no hay ya una trasacción abierta antes de iniciar el proceso).
Coloca esa sentencia fuera (después) del While, con lo cual seguramente se reducirá significativamente el tiempo que consume la operación.
Dinos cómo te funciona de esa manera.
Un saludo.
Al González.