You can get a session object once and then reuse such an object for all subsequent operations such as EncryptInit, SignInit and so on
Consider that NCryptoki is a wrapper to a PKCS#11 module so it supports all programming models supported by PKCS#11 specifications. I suggest to read the PKCS#11 specifications