The loop was taking the entire output as one row, which presumably means the output of the rename task also switched line endings. It also didn't seem to be splitting into fields on "BlankSpace" anymore at all - even after switching line endings I was only getting one column with the entire line in it. Rather than continue wrestling with it, I think I'm either going to loop on the list of source files and just mimic the rename operation in the "read file" target, or give up and use task ID references and string operations so that I can loop from 0 to the number of files renamed and use
{STRING(GetLineByRowNumber|{TASK(<ID>|Result.RenamedFilesSource)}|{LOOP(CurrentValueX)})}
which should hopefully be more resilient; I usually prefer to avoid absolute rather than relative task and job references, but I think in this case it's less likely to break again later that way.