Properly convert values before/after storing them in unboxed sums
Works around #22208
This is a bit of a stop-gap. As-is this will sometimes convert values between reps back and forth which will not always be optimized away. But it beats compiler panics, lint errors and potentially incorrect results.
I can think of some ways to make it fast later on. So this MR won't be the end of #22208