Hi Simon,
Please refer to my solution, it uses a flow to check whether email of new contact is in black list, if exists, delete contact and its event registration.
Part 1:
Create a custom text field "Domains to reject" to Event entity.

Part 2:
Trigger a flow on creation of Event Registration.
1. Retrieve the corresponding contact of event registration to get submitted email by contact.
2. Retrieve the corresponding event of event registration to get domains of black list.
3. Spilt domains value into an array with following expression:
split(encodeUriComponent(outputs('Get_record')?['body/new_rejected_domains']),'
')
The value of the sample will be in array format: [gmail.com,yandex.com,yahoo.com

We need an extra action to convert the output into real array variable.

4. Extract email domain from email field of contact.
last(split(outputs('Get_contact')?['body/emailaddress1'],'@'))

If the submitted value is clofly@gmail.com, then the extracted value will be gmail.com.
5. Initialize a new string variable, append the item of email array to the string.
The ouput of string will be gmail.comyandex.comyahoo.com
6. Check whether mailbox of contact is in the list, if contains, delete the contact, then delete the event registration.

The total process is complex, therefore, I only give screenshots of important steps, please feel free to ask question if you encountered any problem when configuring the flow.
Regards,
Clofly