Sin ofender, pero estás pensando demasiado en esto.
Reúna su información, cuando la tenga toda junto, cree una transacción e inserte las nuevas filas una a la vez. No hay impacto en el rendimiento aquí, ya que la transacción será de corta duración.
Un problema sería si crea la transacción en la conexión, inserta la fila del usuario, luego espera a que el usuario ingrese más información de perfil, inserte eso, luego espere a que agreguen información de dirección, luego inserte eso, NO HAZ ESTO , esta es una transacción innecesariamente larga y creará problemas.
Sin embargo, su escenario (donde tiene todos los datos) es un uso correcto de una transacción, garantiza la integridad de sus datos y no ejercerá ninguna presión sobre su base de datos, y no creará, por sí solo, interbloqueos.
Espero que esto ayude.
PD Los inconvenientes con el enfoque Xml es la complejidad adicional, su código necesita conocer el esquema del xml, su procedimiento almacenado también necesita conocer el esquema Xml. El procedimiento almacenado tiene la complejidad adicional de analizar el xml y luego insertar las filas. Realmente no veo la ventaja de la complejidad adicional para lo que es una transacción simple de ejecución corta.