Defer immediate loads in rvalue expressions

Commit ee4ba44 made it so immediate types are loaded immediately after
a function call or similar. This was done to reduce morestack thrashing.
However, since we do not have segmented stacks any more, this is not
necessary and the issues mentioned in the comment apply more strongly.

Defer the load until we actually need it, as it was causing LLVM to miss
some obvious optimisations.

Fixes #20149