shouldn't the code only set the DE pin HIGH while transmitting, setting it LOW when flush() completes as it does in the master?
in the receiver code, it sets it LOW only before calling available() and when if getData is a match, it's sets it HIGH to send a response, but doesn't set it LOW until just before the next call to available and in the meantime, there's a 100 msec delay. what happens if the next receive data occurs during that delay.
why are there any delays?
it would make more sense for the master to send something and repeatedly check for a response until a specific amount of time has passed by capturing a timestamp and comparing it to millis().