Why should there be a need for all keys to be provided for all dataset types? And it actually can't be all dataset types or all keys – it has to be just those that are aligned with raw/calexp images. (Coadds, for example, shouldn't have all of those keys). Making this generic will require identifying which dataset types are raw/calexp-derived and which keys apply to those dataset types.
I worry that the need for this means that some unusual use is being made of dataId keys and that this is thus just a workaround for a more fundamental problem.