С теоретической точки зрения, вы должны прочитать PKCS # 11 spec , там все написано, начиная с раздела 6.6 и далее
С практической точки зрения приложение становится приложением криптоки после вызова C_Initialize. Понятие сеанса и его идентификатор могут быть переданы небольшой библиотекой-оберткой в продолжительный процесс PKCS # 11, который фактически общается с HSM, но не может. Если процесс, который был приложением криптоки, умирает, то будут действовать все виртуальные ресурсы (что такое сеанс).
Где именно проблема ? Открытие сеанса в большинстве случаев может быть довольно дешевой операцией, если вы не уверены (не измерили), что это узкое место, не оптимизируйте, не открывайте и не закрывайте сеанс для запроса, если вы не можете контролировать продолжительность жизни процесса криптоки.