CoreBluetooth apps in the background cannot scan for peripherals like they do in the foreground.
A background app can expect a single didDiscoverPeripheral() callback per peripheral per scan.
Additionally, when a scanning app is in the background, the scan rate will slow down dramatically, therefore even if you were to receive multiple callbacks, there will be a lot of advertising packets missing.
Any apps that might claim to scan continuously while in the background are either mistaken, or are abusing the CoreBluetooth API in a manner that might cause issues in the long run.
Finally, I would like to mention that it has been determined by the industry that RSSI is a poor estimator for distance. Various factors like reflections, scattering of signals, and other physical properties of the environment make RSSI unsuitable for distance estimation. You can do a quick search yourself to find a number of articles and papers on this subject.