Что произошло до того, как вы начали кэшировать соединения? Вызывало ли их кэширование какое-либо ощутимое улучшение производительности или использования ресурсов? Я был бы немного удивлен, если бы это произошло, учитывая, что ADO.NET делает пул соединений для вас.
Нет вариантов утилизации для состояния приложения. Это для сервера, для домена приложения.
Для другого варианта кэширования рассмотрите использование объекта Cache. Это также для каждого приложения, но вы можете установить истечение срока действия записей в кэше.