O problema com o NOLOCK é que você receberá respostas erradas de vez em quando.
O hardware também não é o problema.
A melhor solução é usar o "Read Commited Snapshot Isolation" do SQL Server. Essa é uma configuração no nível do banco de dados que retorna ao leitor a versão mais recente de uma linha enquanto as linhas estão sendo atualizadas. Muitas vezes é a solução para esse tipo de problema.
Outra solução é usar o particionamento de tabela, mas esse é um recurso do Enterprise Edition (e Developer Edition). Com o particionamento de tabela no SQL 2008, você pode especificar o Auto de bloqueio de bloqueio, que escalará os bloqueios somente no nível da partição. Se você tiver partições suficientes (15.000 permitidas), a maioria das consultas não será bloqueada.
Mas o isolamento de instantâneo confirmado de leitura é a melhor solução.