В вашем коде вы явно не закрываете соединение.
Поскольку вы используете оператор using, оно будет закрыто, но возможна задержка.
Если существует максимальное числосоединений и запросы приходят быстро, вы можете получить исключение, если будет достигнуто максимальное число.
Это объясняет случайный характер ошибок.
Редактировать
Ваш код уязвим к атаке внедрения SQL-сервера, вы должны это исправить.
Ваша проблема может быть ошибкой блокировки, есть ли у вас индекс пользователя и пароль, если нетделать сканирование таблицы, которая блокирует таблицу.