Quitte à passer par plusieurs cartes pourquoi ne pas faire un truc dans le style:
Shield SD <-> Carte 1 (I2C) <-> Carte 1 à Carte x
A ce moment la tu partage le même bus entre cartes et tu en a une exclusivement sur la SD. C'est comme ça que je ferais moi.
Ça reviens à faire comme dans ma première solution, avec de l'i2c pour communiquer entre arduino

Sinon t'a les liaisons type série mais la pour gérer les priorités et les colisions c'est moins facile qu'en I2C.
Pour éviter les collisions il existe un moyen simple, tu gardes deux broches libre, une en INPUT et une en OUTPUT.
-> [in carte 1 out] -> [in carte 2 out] -> [in carte 3 out] ---
---------------------------------------------------------------------
Si INPUT = LOW tu attends, sinon tu peut (pas obligé) passer ton output à LOW et travailler, quand tu as finit tu la repasse à HIGH pour que le module suivant puisse travailler si besoin.
Ça reviens à faire une sorte de "token ring" hardware.