I use J River Media Center to organize my library. All the files are tagged as necessary to make my system work.
The directory structure for the files actually changes as I decide to do things differently from time to time. JRMC makes it easy to rename and move all files. So every once and a while I'll decide that files aren't organized right and do a bulk move and rename. It's easy and harmless. JRMC keeps the playlists and other things intact after a rename like that.
One trick I've discovered though is to do a naming scheme that keeps the pathname and filename from getting too long. That can be a problem with classical music especially, but sometimes with popular music as well. If the pathaname and filename get too long you may find that you can't copy a folder to a thumb drive cause the thumb drive is some flavor of FAT and can't handle filenames as long as NTFS. You can have similar problems with copying a folder to a data CD/DVD.
So I've developed a naming scheme that attempts to keep filenames from getting too long.
JRMC allows the use of functions in defining file names similar to how you'd use functions in a spreadsheet (Foobar can do similar).
My directory rule looks like:
[GeneralGenre]\[File Type]\[Album Artist (auto)] - [Album]If(IsEmpty([Disc #],1),,-PadNumber([Disc #],2))
My filename rule looks like:
Mid([Album Artist (auto)],0,20)-Mid([Album],0,20)-If(IsEmpty([Disc #],1),,PadNumber([Disc #],2))-PadNumber([Track #],2)-Mid([Name],0,20)
GeneralGenre is a custom tag filed that consists of [blues, christmas, classical, jazz, organ, other, rock]
So for example with Pink Floyd "The Wall" I end up with:
LIB\rock\flac\Pink Floyd - The Wall [MFSL] (Disc 1)-01\Pink Floyd-The Wall [MFSL] (Dis-01-03-Another Brick In The.flac
The general form being:
LIB\[GeneralGenre]\[file type]\[Album Artist] - [Album]-[Disc#]\[Album Artist]-[Album]-[Disc#]-[Track#]-[TrackName].extension
Still a little verbose. I may change it all again to be less verbose. I seem to change it all about once or twice a year anyways.