To get around this, would it be possible to have a P2SH m of n script where each of the m redeaming addresses is another m' of n' script?
No because the Bitcoin protocol doesn't use addresses. When you provide your client an address to "send" funds to it. The client decodes the address into either a PubKeyHash or a ScriptHash depending on the type of address. It then constructs either a Pay2PubKeyHash or a Pay2ScriptHash output. The address is never part of the transaction. It is merely a method of communicating a type and hash in a human friendly format.
Likewise OP_CHECKMULTISIG references a sequence of Public Keys (not addresses, not scripts, not script hashes, not pubkeyhashes). The only valid spendable use of OP_CHECKMULTISIG requires a sequence of PubKeys.
The limit of 7-of-15 is somewhat of an artificial one. This can be raised in the future. Raising it to 15-of-15 is relatively easy (the "m" is only limited by "IsStandard" check not a validity check). Raising it to 20-of-20 requires a hard fork to raise the redeemScript limit from 520 bytes to at least 683 bytes. In theory it could be raised beyond that by a hard fork which makes OP_CHECKMULTISIG with an n >20 as valid but I doubt that'll ever happen.