Sinto que fazê-lo de hora em hora ignora uma opção mais simples.
Outra opção é remover a entrada mais antiga sempre que uma nova entrada for feita. Isso elimina a necessidade de um cron job que despeja toda a tabela, pois isso pode interromper o bate-papo removendo as entradas feitas há apenas alguns momentos que ainda são relevantes para o bate-papo.
Portanto, em seu sql "addMessage", basta remover a entrada mais antiga antes de enviar a nova.