В bind-e для подобного случая используются views.
Т. е. для одной подсети зона отдается, к примеру, как internal, для другой - external.
Не уверен, конечно, что вам такой вариант подойдет.
Насколько мне помнится, под каждую строчку в domains.txt squid создаст отдельную acl в памяти. Можно попробовать использовать SquidGuard (http://www.squidguard.org/) он как раз для работы с большими списками.