What I've found to work is this.
Main root folders few and named easily.
- Customers
- Internal
- Private
- VMs
All sub-folders have numbers, so they can always sort by name so they're always in the same order.
00 - Tests
10 - Code
11 - Code (Testing)
12 - Code (Other)
20 - Design (Sites)
25 - Design (Other)
30 - Services
35 - Marketing
40 - Apps (Web)
41 - Apps (Hosted)
50 - Docs
51 - Guides
60 - Sysadmin
etc...
This creates a logical and consequential structure that's easy to update, change and manage and you can have many levels.
Just consider your numbers for your use-case so you won't run out and sub-numbers can be unclear/messy to look at and navigate.
For managing downloaded files automatically, I use Hazel.