Fixed UnloadCargo stacking using new subcell API exposure

Partially supersedes #6083, Cargo.SpawnPassengers will have to wait for my Exit refactoring and discussion on how unloading while being sold should be handled.
Style nit: `OffsetOf` is an incomplete name, so this breaks mental flow when scanning through code and hit something like `x => OffsetOf(x)`.  `SubCellOffset` would make this clearer.