Multisig with same keys
A transaction of the form:

2 pubkeyA pubkeyA pubkeyB pubkeyC 4 OP_CHECKMULTISIG


should do what you want. Give it a try on testnet, shouldn't be hard to whip up a test case using the raw transactions API of Bitcoin Core.