It all comes down to aroma.
As a general practice, you can go with "The smallest options, the better." This is convenient from the point of view of code clarity, and actually saves stack memory (not so much, but every bit is important in the end).
Having different names, you can also use autocomplete.
For example, I would go for
GetAllSubOrgUnitsList() GetFirstSubOrgUnitsList()
The reason for this, after receiving, the first letter I write will determine what I want.
As you already mentioned, if you cannot have an intuitive name, you can add default options.
In your example
GetDirectSubUnitsExcludingSome()
I would replace it with a minimal set of parameters
GetFilteredSuborgUnits(ISuborgFilter aFilter);
And then, from the architecture, ask developers to implement their custom filters. A filter can request hierarchical depth, a specific property, etc. (You are an architect, you decide).
So, as a brief summary: KISS!
Even if GetAllSuborgUnits () provides the same with GetFilteredSubOrgUnits (null), then giving a quick and clear alternative to behavior is better than a complex name / set of parameters. After all, layoffs are not always bad things :).