Assets metadata: Matrix required?
You could go for a lightweight content-builder. That would mean that you could and would create a matrix blocktype for each of your content elements i.e. one blocktype for image with all the metadata you could chew on as fields, another for say body with some props too and so forth.

That would also give your users some neat control over the document flow.

Then you would saw it seamlessly together on the template layer. Your Content-Editors will not feel a thing.