Modified the bridge playback teardown so the worker thread removes only the
playback control, while the after-bridge callback removes the playback
wrapper once the announcer has actually left the bridge.
This avoids a stale window where a new playback request could create a
replacement announcer before the old announcer had fully exited the holding
bridge.
Also replaced the flexible trailing bridge_id storage in the shared worker
thread data with an optional bridge_id pointer, since recording paths use the
same structure without a bridge id.
Fixes: #1861