A consulta a seguir não precisa ser executada regularmente e pode ser movida para um cron job:
DELETE FROM failures WHERE release_time < ?;
Esta consulta "booleana" retornará 1 se a pessoa estiver na lista negra, 0 caso contrário:
SELECT
COUNT(ip_address) as blacklisted
FROM blacklist
WHERE
ip_address = ? AND
release_time > ? AND
failures > 5
Pode acelerar as coisas, pois você não está usando PHP para contar linhas e comparar números:
if ($row['blacklisted']) { /* ... */ }
Eu não acho que você pode evitar o último realmente.