La cosa se puede manejar, en principio, de dos formas:
1. Usando un Store Procedure. Como los SP corren en servidor, el bloqueo se inicia y se termina dentro del SP, de modo que la consistencia de la tabla es segura. Esta opción requiere que el server de MySQL en el host sea 5.0 o superior.
2. Usando transacciones. Una transacción es una operación ACID que bloquea por default las modificaciones a la tabla en cuestión. Eso requiere que el motor del host sea InnoDB. Si es una base en web, es probable que tenga MyISAM y no InnoDB por cuestiones de eficiencia. Deberás consultar al proveedor.
Puedes controlar el asunto por código, pero, como dices, eso es medio chapucero...
Respecto al control del bloqueo, La administración del estado de la tabla simplemente lo puedes manejar por el error devuelto por MySQL al intentar acceder a una tabla bloqueada.
Simplemente tienes que fijarte en el número de error devuelto en el
listado de errores del manual de referencia.