Don't remove a data source if we know already it's not added.

i.e. it's null.
Only attempt to move service to fore/background if it's the opposite.

Cuts down on log messages and wasteful work.
Clear a stored Bluetooth VI address when user requests a rescan.
Run automatic Bluetooth device detection only once at startup.

It either runs when Bluetooth is enabled, when the service first starts,
or when the user hits the button to re-scan for devices. Othewise, it
tries to connect only to the last known device.
Decrease time to reconneciton attempt after changing BT address.
Avoid a race condition when modifying the BT connection background task.