However, if a hacker were able to get a shell on the DB server, they could request the key from the key server and therefore decrypt the data in the database.
How could I prevent this[...]?
Basicamente, você nunca poderia, a menos que você tenha projetado um sistema para mitigar esse tipo de ataque desde o começo. A arquitetura atual do PC não permite esse tipo de aplicativo. Esforços como o Base de Computação Segura da Próxima Geração foram projetados para lidar com um tipo semelhante de tarefa, restringindo a capacidade de executar caminhos de código apenas para os "necessários".
Criptografia de ponta a ponta, onde as chaves de criptografia / descriptografia são gerenciadas pelos clientes e o servidor de banco de dados não tem nenhum conhecimento das chaves, pode apresentar outra opção. Apesar de não deixar o servidor de banco de dados, informações suficientes para trabalhar (como índices) podem reduzir significativamente sua capacidade de pré-processar dados e, assim, reduzir seu valor para seu aplicativo.