Eu acho que o seu "bloqueio" VirtualHost está funcionando apenas como você espera, devido ao comportamento padrão do Apache; se não for possível encontrar um VirtualHost com um ServerName
/ ServerAlias
correspondente à solicitação, ele usará o VirtualHost padrão (que, se não for explicitamente selecionado, é o primeiro que analisa).
Você deve colocar os sites que você deseja bloquear explicitamente em seu VirtualHost de "bloqueio", assim:
<VirtualHost *:80>
# Add these lines so Apache knows explicitly what to route here:
ServerName blocking.localhost
ServerAlias blockeddomain1.com *.blockeddomain1.com
ServerAlias blockeddomain2.com *.blockeddomain2.com
# Everything else
DocumentRoot "/sites/blocked"
<Directory /sites/blocked>
Options Indexes FollowSymLinks Multiviews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>