This may be an unpopular suggestion, entirely against the workflow you have going here, but I just sort things as I go throughout the week. If I extract an attachment from email, I stick it in a folder before opening it. If I save something from the web, I file it appropriately before doing anything with it. It seems pretty efficient to do it this way, particularly since it allows me to remember the exact context and use that as part of the sort criteria. For example I may have downloaded a driver for a particular graphics card, and if I come to it later I'll see it as "Graphics card driver" and put it in "Drivers", but in reality when I downloaded it, it was for a friend's computer, and I have a separate folder which I call "Work" with subfolder "Clients" where I keep files specifically for use with other people's computers. If I sort later, I may not remember that context.
Anyway that's just my method. Sorting all at once may be more efficient in theory, but in practice you do run into the issues you mention above.