Soweit ich dich verstanden habe, weist du Texturen beim Laden deiner Objekte über ein Dictionary zu. Da das ja wahrscheinlich nur beim ersten Laden stattfindet, ist dieser Teil deines Systems sicherlich nicht Performance problematisch und viel schneller als mit einem Dictionary wird es eh nicht werden. Aber das weißt du ja glaube ich auch selbst
.
Du könntest ja mal überlegen die Animationen als Kombination aus Texturkoordinaten (pro Sprite-Frame) und Textur zu speichern. Dann kannst du ohne Probleme jede Form von Spritesheet benutzen und hast volle Flexibilität. Ein Generator/Editor wäre dafür natürlich sinnvoll. Wenn deine Sprites nicht riesige Dimensionen haben, könntest du wahrscheinlich deine ganzen Spritessheets gleichzeitig für den Fragmentshader setzen und so ohne Texturwechsel das meiste rendern können. Man könnte auch mal schauen ob dazu 3D Texturen vielleicht geeignet sind (um mehrere Spritesheets zu schichten).
BTW wenn du XNA benutzt und das ganze evt. auch bei XBLIG veröffentlichen willst, kannst du eigentlich ohne schlechtes Gewissen soviel du möchtest hardcoden, da du von einer flexiblen Struktur ja nur profitierst, wenn a) deine Compilezeiten besonders lang sind (sollte bei C# eigentlich nicht das Problem sein) und b) du mit mehreren Personen am Projekt arbeitest, die im Projekt den Austausch/das Einstellen von Ressourcen ohne neu zu kompilieren vornehmen können müssen. Letzteres ist bei XNA so wie ich es erlebt habe für XBLIG Projekte sowieso nicht wirklich möglich.