NRF with multiple transmitters - IMU units

You seem not understand how available(&) works.

It does not select messages from targets, it tells you on which pipe the last packet came from.
The pointer argument allows available() to have something like a second return value.

Look that up in the library documentation, I'm tired reading documentation to anyone.

typedef struct
 {
 float yawTemp = 0, pitchTemp = 0, rollTemp= 0;
 float az = 0, ay = 0, ax = 0, rate= 0, ID =0;
 }dataPack1;
dataPack1 package1;      

typedef struct
 {
 float yawTemp = 0, pitchTemp = 0, rollTemp= 0;
 float az = 0, ay = 0, ax = 0, rate= 0, ID =0;
 }dataPack2;
dataPack2 package2;  

typedef struct
 {
 float yawTemp = 0, pitchTemp = 0, rollTemp= 0;
 float az = 0, ay = 0, ax = 0, rate= 0, ID =0;
 }dataPack4;
dataPack4 package4;

What is that crap for?
Thrice the same structure?
And why typedef them, struct are a type automatically.

Adding a struct member function 'print' or similar would make your code more readable.
Likewise would removing commented code.
Don't comment the obvious, remove outdated wrong comments.