You can load it async by doing the following:
Add 'async' to the collect.js library:
Then add this line in the tag:
var _etmc = ;
Yes, there is nothing wrong with firing the script asynchronously.
I would actually see this as an advantage. Usually I intentionally introduce a 3-5 second delay, from the page has loaded, and until the script fires. This is to avoid storing "false" page views, as only after being on a page for a few seconds, one can assume that content indeed has been ...
You will be perfectly fine using anything but the email address. There is only one place which depends on setuserinfo using email address, and it is the automatically provisioned attribute group in data designer, which links your contact model with Personalisation Builder via email address from your contact with email field of IGO_PROFILES data extension. ...
Well, looking at the documentation it states that it should be either email or some unique ID, the unique Id can be randomly generated and used as a subscriber key, something like an advertising ID.
The unique Id is not a PII per se because others cannot link a user with that info, they can with an email but I do understand that there are some other areas ...