refactor participant registration and id creation

Refactoring participant registration to use filter + exists queries with
select_for_update locking instead of try/except User.DoesNotExist to
address username constraint violations when creating a user.

Using sha1.hexdigest() instead of base64 encoding of the digest to
generate more sensible hash ids based on the participant email address
(still unused) and upping the participant_identifier field length to 64.