O problema que você encontrou é provavelmente parte do design do mod_evasive: as estatísticas usadas para bloquear são salvas em cada processo filho. Portanto, se você estiver usando o Prefork MPM e tiver MaxClients como 50, as conexões com cada um desses 50 clientes serão rastreadas de forma independente.
Além disso, há a configuração MaxRequestsPerChild. Quando isso for alcançado, a criança será morta e as estatísticas junto com ela. Então, em alguns casos, o mod_evasive simplesmente não é efetivo.
Desculpe, não tenho uma alternativa melhor para recomendar neste momento. Eu estou procurando por mim mesmo. (Eu ainda não confirmei se funciona melhor com outros MPMs.)
Referências: