You've probably got a timing/synchronisation problem.
It would be better in this case, instead of having 4 separate reads and writes to have only one of each.
Create an array called say hall: float hall[4] ;
On the transmitter side, you fill the array from the 4 individual sensors then send the whole array in a single statement.
radio.write( &hall[0], sizeof(hall) ); // this sends the entire array of 4 items
On the receiver side you do the equivalent:
radio.reads( &hall[0], sizeof(hall) ); // this reads the entire array of 4 items
Then you can use/set the results by referring to hall[0], hall[1], hall[2] and hall[3].