My approach has been to break the solution into it's smallest workable form. I breadboarded a new simple solution. No MOSFETS, just code that transmits a char array of "Open" for the other unit to receive and flash a light for one second. That worked fine, the serial window and light confirming it works in a loop.
On the transmitter I put a button on the VIN wire so it was powered when depressed.
Pressing this button (for plenty of time) caused the same thing to happen (looping around transmitting happily).
As I did not want my garage door to shoot up and down all day I used a boolean so the loop only ran once. It transmits "Open" sets the boolean to false and does not run again (until powered off and on again).
I pressed the button (for a long time) on the transmitter, the light on the receiver flashed to confirm success and the button was then released. Success.
However pressing the transmitter button (for a long time) again provides no response. At that point it fails.
The receiver does nothing, not even fire a println statement after a 'if (radio.available) ' statement.
Power off the receiver and back on again and it works; but only the once.
As I only need it to run once I moved all the code to Setup and left Loop empty. Still would not work on attempt 2.
So it works if you send a constant stream of transmissions but not if you send one and then power off the transmitter.
I tried flushing the receiver but it made no difference.
As multiple transmissions appeared to work, I transmitted the Char with a value of "Open" followed by a 250ms delay, then used strcpy changing Char to "Shut" and transmit that.
The conditional statement in the receiver gets the "Open" transmission and flashes the light. It then receives the "Shut" transmission and ignores it as there are no instructions to do anything with it.
However when you press the transmitter button again the receiver light flashes every time.
Conclusion: The wiring and power supply shows all is well. Sending one transmission and powering the transmitter off appears to lock the receiver. I sort of have a solution but can't see why it did not work in the first instance. If anyone can shed any light on the reason for this failure I'd be very grateful. Thanks to everyone who helped me with suggestions on this issue.