Hi Brandon,
That "very popular method" is no good because SharePoint doesn't lock the count so if you have multiple people writing simultaneously, you could have contention and the Max(ID)+1 will return a value that is truly no longer available.
The correct technique is to submit with a unique ID in the form that is promoted. Then, right after you submit, you query the library filtering for the item with the unique ID. You then copy the ShP list or library ID into the form from the secondary data source and resubmit. That will guarantee that two people submitting simultaneously don't cause problems with your form numbers.
To remove permissions, the best way is to use the Impersonation step that you have discovered. You need to make sure you remove the permissions for just the item that got submitted, not for the entire library. That's probably the issue. Just make sure you remove permissions only on the current item and you should be ok.
If not, send me email and we'll demo the technique to you.
Note: ShP 2010 has a 5000 ACL limit around libraries so if you are going to store more than 5000 forms in the library, you'll need another option. I recommend looking at our DBXL Web Service which will scale to millions and handles dynamic document level permissioning based on data within your form (i.e. no workflow needed).