Одна проблема, которую я вижу, в строке, где вы устанавливаете Аргументы:
proc.StartInfo.Arguments = "blastp -query input.txt -db pdbaa -out output.txt";
Я думаю, вы имели в виду:
proc.StartInfo.Arguments = "-query input.txt -db pdbaa -out output.txt";
Так что вам не нужно снова указывать имя исполняемого файла в Аргументах - для этого и существует FileName.
Другое дело, что есть много приложений, которые ведут себя не очень хорошо, если вы не используете shell-execute для их запуска. Попробуйте сначала с помощью shell-execute (и, очевидно, без перенаправления любого std *), и если это сработает таким образом, то вы поймете, в чем проблема - хотя, боюсь, вы мало что можете с этим поделать.
Кроме того, почему линия
proc.StartInfo.RedirectStandardError = true;
повторяется дважды?