If the OpenTelemetry API exposed primarily interfaces, I think we could provide implementations of those interfaces that implement both the application's (unshaded) OpenTelemetry API and the agent's (shaded) OpenTelemetry API at the same time.
This doesn't get rid of the shading, but I think it would eliminate the need to bridge back and forth.