IIRC those sensors need ~750mS to take a reading, so that's where your delay is.
The solution is simple and I think you have already found it, the slaves constantly take readings and save the last one in a variable, when asked that value is ready instantly and that's what you provide.
but even this solution is far away of be perfect.
Why. Apart from being the only solution I can see it's also a good one.
I was also thinking on interrupts
Interrupts will not help here, the problem is in the sensor delay.
EDIT: I can see no reason to use a float BTW, the sensor provides a signed int.