Fix an ICE with unsized structs and optimised enums

close #18353 

r?
This is a reasonable cleanup, but slightly confusing in that it users `slice_elt_base` everywhere and silently depends on it being equal to `trt_field_box`.  I would suggest merging the two constants into something like `dst_fat_base` or similar.