The problem here, as I see it, is that we're flying blind. If there's just one spindle, I think it's got to be right to read the relation sequentially. But if there are multiple spindles, it might not be, but it seems hard to predict what we should do. We don't know what the RAID chunk size is or how many spindles there are, so any guess as to how to chunk up the relation and divide up the work between workers is just a shot in the dark.
Can't the planner take effective_io_concurrency into account?