Eu não pude habilitar o registro de reescrita, então encontrei outra maneira, e fiz isso diretamente em todas as páginas com um formulário:
if ( strlen( $_SERVER['REQUEST_URI'] )>650 ) {
header('HTTP/1.0 401 Unauthorized');
.. error message to not panic real users ...
exit;
}
Porque eu encontrei (observando os logs de acesso e considerando os campos do formulário) que um URL com mais de 650 caracteres nunca é uma solicitação válida. (o tamanho médio era 4-6 Kb)
Infelizmente, o problema de regex ainda está lá e não conseguiu resolvê-lo. Mas pelo menos o problema foi parcialmente resolvido (os bots ainda estão lá, mas a página usa muito poucos recursos, já que nenhuma pergunta é feita)
Felizmente, os bots reconhecerão o erro 401 e desistirão.