make getSignId a secret key operation, and respect unavailable keys

This one should remedy #811, but waiting for a test
add test case for stripped master key, correct signing subkey should still be selected