If the interval between the radio and sound signals is about 2000 microsecs (usecs) I would be inclined to try polling with a fast loop - assuming nothing else needs to be done while waiting for the sound signal. If you use PINx (direct port manipulation) it will be much faster than digitalRead().
I think this will read pin12 which is bit 4 of Port B - if not it is very close. And I may have the logic inverted.
// when radio signal is received
unsigned long endMicros = 0;
unsigned long startMicros = micros();
waitForSound();
// other stuff
void waitForSound() {
byte inVal = 0;
while (inVal == 0) {
inVal = PINB & 0b00010000;
}
endMicros = micros();
}
That loop should only involve a few machine instructions and (I think) take 1 or 2 usecs which should give accuracy better than 0.5%
...R