Acredito que o .htaccess só é verificado no início da sessão tcp, e com manipulação inteligente no nível do pacote ainda pode ser possível manipular os quadros para que os primeiros quadros tenham um IP falso somente enquanto a sessão estiver sendo configurada, e a sessão real então tem o IP real que você estava tentando bloquear.
É por isso que temos firewalls com informações de estado - o htaccess não substitui um firewall.
Ou isso, ou o seu, htaccess não é verificado - você testou que funciona? : -)