Todavía usaría SqlBulkCopy
para copiar rápidamente sus datos del archivo externo en una tabla provisional que tiene la misma estructura (plana) que el archivo (deberá crear esa tabla con anticipación)
Una vez que se carga, puede dividir los datos en varias tablas usando, p. un procedimiento almacenado o algo así, debería ser bastante rápido ya que todo ya está en el servidor.