This seems like it would do the trick, but it might be a little more than necessary.
A question I would like for clarity on your exact situation would be: Was the error message that InfoPath returned when you blanked out the Primary Key something to the effect of "Primary Key cannot contain blank or null value" ?
Also, I tried doing the same thing you did here and InfoPath gave me the error of "Cannot submit form because this would create duplicate entries" i.e. the PK was the same as the one before.
If so, I think your original solution will work, but instead of blanking out the PK, you need to fill it with a new one. To do this, you need to query your database to find out what the next PK is in sequence, and then use the next one on your form. If the PKs in the DB are 1,2,3,4,5,6,7 then instead of blanking out your PK in your form, you will want to set it to 8. This way the user only has to press one button. I think after you do this you will be able to submit all other duplicate data from the previous version of the record.
The only gotcha I can think of with the method you describe above is that it could drastically affect performance. I've been working on a form recently that moves a lot of nodes around and that can get VERY expensive. I'm not sure why, but InfoPath is just not very fast at moving large chunks of XML around, but that is another topic.
Anyway, I hope this information helps!
---------------
Matt Faus
InfoPath Dev Texas
Matt Faus / Microsoft InfoPath MVPQdabra® Software / Streamline data gathering to turn process into knowledge