Te manda ese error porque en realidad estás intentado agregar el mismo DataTable a otro DataSet, me explico:
Al hacer esta asignación:
dt1 = procedimiento().Tables[0];
En realidad lo único que estás haciendo es copiar la referencia de "procedimiento().Tables[0]", para que se copie correctamente podrías usar los métodos Clone o Copy del
DataTable.:
Tu código probablemente debería lucir de la siguiente manera:
dt1 = procedimiento().Tables[0].Copy();
Saludos
PS. Te sugiero que leas un poco sobre "Value Types" y "Reference Types"