Completely rework with_fx

* Should fix recently introduced nesting issues
* Simplify implementation
* Remove unnecessary thread creation and all the warts that brought along
* Extract out thread joining and synth waiting as a separate fn
* Pray I haven’t introduced any other obscure threading bugs…
Merge remote-tracking branch 'origin/master'