The organization approach you suggest seems sound to me. I use it myself and have not found any problems. Source files should not be 10kloc long. :o
I often bend the one file per class rule. When a few small classes are meant to be used together, I'll sometimes just put them all in one module. For example, a custom collection class and its iterators. So long as the file doesn't grow too large.
If you're using namespaces to wrap an enum, or to implement Boost's "detail" idiom, then I wouldn't put them in their own subdirectory.
Most decent IDEs have a symbols browser and a "Find In Files" feature to quickly find classes/functions in a project's source tree.
When I want to familiarize myself with a new C/C++ project, I run the source tree through Doxygen, and enable SOURCE_BROWSER and most EXTRACT_XXX options. Even if there are no Doxygen tags in the source code, you'll still have a nice way to quickly navigate through the source tree. The SOURCE_BROWSER is an awesome feature that produces code listings with hyperlinks to all known entities (namespaces, classes, functions, etc). To search for a class/function, you can go to the index page that Doxygen generates, and use the find feature of your web browser. You can also make Doxygen generate a search engine (which needs PHP).
Doxygen will also produce snazzy "collaboration" diagrams of your classes and header files, so you can see what the dependencies are.
Hope this helps.