How to sign messages using the NOISE Protocol Framework?
If you need signatures, use the signatures API. Signing key pairs may or may not be ephemeral, this depends on your use case. You'll need some way to determine that a signing keypair belongs to whoever you think it belongs to, this can't be handled by the library alone.
Signing key pairs and key exchange key pairs are different data types (hydro_sign_keypair vs hydro_kx_keypair or hydro_kx_session_keypair) and thus can't be used interchangeably.
A session should last at most for as long as a given connection using the service lasts. That might be weeks, but is more likely only as long as a user stays active.