Not thinking clearly ATM, so this is a round-about method ...
If you were to archive the tree (using a non-compress method would be faster) you could work it in two ways. Archive the tree (so subdirectories included) & extract with an 'E' (Extract) rather then with an 'X' (eXtract files with full path), the extracted files would be placed into a single directory. Other way to do the same would be on archive creation, to tell it to "exclude paths from names". Then the created archive would be barren of paths, i.e. all files stored in a single directory in the archive, so when extracted, they would extract that way too. (Thinking the former method makes more sense.)
(ARJ can do this. Would think that 7z & RAR & ZIP could too?)
"Flatten" was a word I was trying to think of earlier. And with that, a backup/synchronization program likely can be set to "flatten" a directory structure.
So other thoughts ... Tar & DD? Maybe that will help others come up with a better answer that I'm not thinking of ATM.
(Been a long time since I've used Tar, so I may off base, but something in the nature of...)
tar -cvf c:/foo/roo | tar -xvf -
An archiver & backup/synchronizer should be able to handle any dups in an automated fashion.
ARJ can. Don't know about tar?