Practical/common approaches to 'using' threadsafe functions for simple shared variables?

I am having trouble understanding your problem, are you overthinking it? The pattern is rather simple.

sharedVar of some type

Setup
.....
create mutex(); // as ready
....
create tasks ...
end setup

Task 1
...
getMutex(); // wait for sharedVar to be free
do stuff with sharedVar ...
freeMutex; // done with sharedVar
... more stuff if needed
end task1

Task 2
...
getMutex(); // wait for sharedVar to be free
do stuff with sharedVar ...
freeMutex; // done with sharedVar
....
end task2

See Examples->ESP32->freeRTOS->Mutex

I would suggest changing the random wait time to 1000ms to make it easier to see what is happening.