Before you start digging into it:
- The 1024 is only a amuled issue, not an amule issue. With amule, file handles are unlimited (if they are unlimited in your OS at least). For amuled there is a chance to get rid of the limit and the legacy code when wx 3.0 comes out and sockets/events for non-gui apps become available.
- 600 downloads at a time is overdoing things anyway. A machine capable of that can also run amule instead of amuled and so work around the problem.
- I don't want to know what happens if you open a partfile, memory-map part of it for reading, close it (still mapped), reopen it, and then write to it. Especially on the multiple platforms we support. No, thanks (shiver).
- Full hashing is done on background thread (single part hashing is done in the main thread). Download is finished then anyway, and upload is suspended meanwhile. Otherwise access is single-threaded, so there
are no write conflicts. Don't trust any ole comment lying around.

Bottom line: I would just leave it like it is. The risk outweights the gain imho.