Improve handling of swapstop

* Fire deferred immediately
* Track swapstop on incoming / playing sounds
* Fix case where props change while playing