How can I tell when `rescanblockchain` is finished? Rescanning the blockchain can take some time. How can I tell (via RPC) when the rescanblockchain command has finished? Will it block until it's done, and only then return? Or is there another RPC I can use to see its progress?

Does the same answer apply to other RPC calls that might trigger a rescan, such as importmulti and loadwallet?

I'm worried about (if it blocks) the user experience of sitting there for possibly minutes with no progress indication; or (if it doesn't block) future RPC calls (such as getbalance) getting stale info before the rescan has completed.
rescanblockchain will block until it is complete. This will happen for any RPC which rescans the blockchain.

However, this does not mean that the RPC interface is unusable. You can still interact with it from another thread. If a rescan is taking too long, you can use abortrescan from another thread/process (e.g. another terminal session) to cancel the ongoing rescan.

There are no RPCs for seeing the progress of a rescan. However, if you are using bitcoin-qt, a dialog window will appear with a progress bar showing the rescan progress.