I think there was a great deal of work put into the organization of the problem libraries that are used by the Library Browser. It may be that may be a place to start when looking for wisdom, but I don't know much about that. And I don't have any particularly inspirational other thoughts, but I am loathe to let a post languish when I have something to say, so...
The way we've been organizing our problem files at the University of Michigan is by what I call "course topic area", viz., "sv_calc" for single-variable calculus, "mv_calc", "diff_eq", etc., and then by chapter or section in the text that we're using. The chapters or sections then become subdirectories in the course topic area directory, and the problems are numbered to identify their section number and problem number in the section. This is excellent when the text doesn't change, and rather less so when there are changes and it becomes necessary to map the problems into another textbook.
I think this problem more generally is a non-trivial one. When I started looking at it a while ago I found it very difficult to figure out where to draw the distinction between courses, and if I dispensed with those and tried to identify things all by subject matter had trouble with different topics appearing at different places in different courses.
I'd be interested to hear what you come up with.