Well, I've been looking at the code in the LL_PowerOnReq (and Off) and looks like they only init the radio interface and the timer 2 so I'm working in a modify version of hal_sleep that only calls LL_PowerOnReq when a radio event is expected. It's kind of tricky, because other events (such as OSAL or from your application) may trigger a radio transmission, so you need to check before that if you kept the radio off to turn it on again.
As a summary, there's no simple solution that fits all cases, you'll have to tune it for your application.
In my case, LL_PowerOnReq and LL_PowerOffReq aren't so complex, as most of the code is for debugging or specific situations. LL_TimeToNextRfEvent is the tricky one, as you need to understand the timing calculations.
Javier