En caso de que alguien más encuentre esta pregunta con el mismo problema, decidimos no usar el ORM para esta situación. Acabamos de escribir dos procedimientos almacenados de SQL (uno para adiciones y otro para eliminaciones), y esto simplificó el problema y aumentó enormemente la eficiencia. Al probar con más de 100 000 registros, llevaría una cantidad ridícula de tiempo completar las acciones si no arrojara una excepción de falta de memoria. Con los procedimientos almacenados, nuestras operaciones se completaron en un par de segundos o menos. Las únicas desventajas de este enfoque provienen del punto de vista de la capacidad de prueba.