Solution from the OP, revision 2
Turns out I was being pretty dumb.
Firstly there is no need to have awk prepend the path to every single file just to throw most of it away. So the awk statement should be the last pipe.
Secondly instead of reversing sorting with ls we can do a standard time sort and use tail to extract the lines we're after. This ensure the pipe remains open for the entire process.
The new command would look like:
ls -t1 /a/path | tail -n 50 | awk -F '\n' -vpath=/prepend/path/ ''