This can be done, but would probably require "participation" by other users of the custom data field. Since we do not really know what plugins might use the field there is some risk, but at least for a local install the risk is mangeable.
The general technique is to store multiple fields in an array with the array index of the field being then name of the field. That array is serialized when stored in the custom data database field and unserialized when you want to use the data. There is a filter `save_image_custom_data` that you would attach to copllect and serialize the data for storage and one `edit_image_custom_data` to format the admin page data input.
The `comment_form` plugin would be a good example of this technique. It saves the user's address, etc in the user object custom data field. The filters here are of course for `admin` not `image` but the mechanism is the same.