How? We can't inject metadata into an arbitrary NT handle.
You could setup a shared memory section used by WineD3D instances, where you'd store a handle -> descriptor mapping, which is probably what you meant with side-channel in 1).
How do you identify which handle is which? We're talking about NT handles here; you can't just map them. There's no way to say "is handle A in process X the same as handle B in process Y".