I figured the nRF52 would be your best bet. Sounds like you're on your way.
My issue is the BLE stuff will have to co-exist with my app code, and RTOS isn't really recommended. So that means I'll need to be pretty particular about how my code works. Esp since I'll have SPI and comms to another chip and that will get interrupted at any time.
This is all SORT OF an advantage with the TI or other chips where it's a separate core that does the BLE work that you still have a place to run any code with any timing or any OS you like. Nordic SAYS the support RTOSes, but when it comes to it they recommend their scheduler instead which will make some things easier no doubt but isn't a straight up RTOS.
As others pointed out, Nordic do provide some active support for some RTOSs, but there is certainly an overhead, both in terms of memory/CPU/code size but also in terms of complexity of execution flows (and accordingly predictability of behaviour).
If the needs of the application are the typical "read some sensor over SPI/I2C, aggregate/filter the values, [store in flash], "notify" to the companion app over BLE, I would propose that in most cases using the Nordic SDK without an RTOS will be simpler and more easy to reason about.
The recent versions of the SDKs have support for asynchronous use of the I2C/SPI peripherals and on NRF52 both support "EasyDMA" so co-operation with the softdevice is not such a big issue any more. Though it was fine on older SDKs and NRF51 too, just not quite as convenient

My usual logic tends to be something like:
- respond to interrupt from sensor, set a flag
- read flag in main loop, activate SPI/I2C peripheral transaction
- get interrupt from peripheral, set flag
- read flag in main loop, process data
That way all the interrupt routines are very short which is good for co-operation with the softdevice.
BTW the "dev zone", Nordic's forum, is really good and Nordic engineers answer questions quickly there.