Yes, you can use the same session with different private keys.
Following the PKCS#11 specifications, you should make:
- only one initialization e.g. 1 call to Initialize method
- only one login to the token
- open multiple sessions
- SignInit and all xxxInit methods must be called before the Sign (and xxx) operation
For all that rules, you must follow the PKCS#11 specifications