[Distributed] Worker local race condition between put! and fetch for Futures (#42339)
* add local_lock to Future, use it in fetch and put!
* add corrections to the remote/clientref logic
* add memory ordering guarantees
* serialize a (unlocked) copy of the future to avoid problems with the lock
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
Co-authored-by: Takafumi Arakaki <aka.tkf@gmail.com>