Your plan seems good to me.
I would probably do this with one 2D array object with a couple of instance variables.
Store all animation sheets in text files (CSV, XML) and load them into the array when you need them.
Say, when player picks up a new sword, you open LongSword_animations.XML and create a bunch of AnimationArray instances:
1. create AnimationArray, set variable object_type="LongSword", animation_type="idle"
2. create AnimationArray, set variable object_type="LongSword", animation_type="attack"
etc.
Then you fill in these arrays with data from the XML.
You'll need to code a bunch of functions, but you'll only have to do it once and will be able to reuse them for all animated objects.