The locks in mysql are un-necessarily restrictive before it even checks if the table already exists. The bug report, that seems to be being ignored by mysql but has been fixed on a fork of mysql, explains it pretty well:
If one session had any metadata lock on a table, another session
attempting CREATE TABLE [IF NOT EXISTS] for the same table would
hang. This occurred due to an attempt in the second session to
acquire an exclusive metadata lock on the table before checking
whether the table already existed. An exclusive metadata lock is not
compatible with any other metadata locks, so the session hung for the
lock timeout period if another session had the table locked.
The fork that fixed it by using the (rather obvious) solution of doing a shared lock to see if it exists, then if it did not exist upgrading to an exclusive lock.