You're right - this is not possible with the BizTalk file adapter.
The only way I can think of achieving this in pure BizTalk would be to write your own custom file adapter. There is a wizard that will help you build a custom adapter in Codeplex here.
Some other options that may do what you need are:
- Programatically creating receive locations for each direcory in the tree (probably cumbersome if the tree is large)
- Aggregating the files using a windows service into one location (you would lose the context properties about the original location)
- Call a .NET helper component from within an orchestration that searches the directory tree (not a bad option but again you would lose the nice ability of BizTalk managing context properties for you - you would need to write some custom code that allows you to retain properties like the original location)