Had a similar thought myself on this.
My solution was to blocklist the contact as normal, but use the API to delete the contact after a pre-determined time. This protects the subscriber from being re-used incorrectly by the system or by fake sign ups, but the system also then purges old subscribers that are blocked allowing re-sign up. This I felt was also good for GDPR as then my contacts don’t have old stale user data hanging around.
As it is unlikely a contact will unsubscribe then quickly re-subscribe this should be workable - but I also have a help page advising that users would need to get in touch if trying to resubscribe quickly.
I also have a separate list of users who failed to complete sign up - these hang around longer as usually means someone tried to mis-use the contact form.