Passing UsdShadeInput metadata to Hydra

What would be the best way to handle the passing of metadata through to Hydra?
To explain here is a specific problem that I am currently trying to solve.

Material X parameters can be tagged with a unit attribute:

MaterialX allows floating-point and vector values to be defined in terms of a specific unit and unit type, and can automatically convert values from their specified unit into a scene unit of the same type specified by the application. This allows images and the quantities they represent such as displacement amount to be specified at an absolute real-world size, and then be converted automatically to the expected scene units of the application.

Presently the UsdMtlx plugin ignores this data and I have submitted a ticket and MR for this:

In our Hydra delegate we are calling the MateralX->MDL code generator; however in order to generate the correct result we need to have access to the unit metadata.

This mimics another issue that we have internally and that is passing colorspace information to Hydra. Presently we have a local modification to to the HdMaterialNode to add an additional field like so:

struct HdMaterialNode
{
    SdfPath path;
    TfToken identifier;
    std::map<TfToken, VtValue> parameters;

    // local changes - pass color space metadata
    std::map<TfToken, TfToken> paramColorSpace;
};

I could make this a more generic solution and pass all metadata:

struct HdMaterialNode
{
    SdfPath path;
    TfToken identifier;

    // local changes - pass all metadata
    std::map<TfToken, VtDictionary> paramMetadata;
};

Is this a reasonable solution?
If not any suggestions as to what would be a reasonable solution are much appreciated.

Ideally we would like to remove custom/local modifications to the codebase so if it is reasonable is this something worthy of an MR to OpenUSD?