The advantages to physically separating your modules is that it permits the work to be logically broken up amongst different teams. In your case you could have an Inventory team who is responsible for all things inventory related, they publish an API, and to all other teams the inventory module's underpinnings are a black box. This is an advantage to tackling complexity in your domain.
The disadvantage is if your project is small you may introduce a lot more complexity in the software development and deployment process, especially if you do something like go across process (or machine) barriers.
The suggested architecture may be better based on the needs of the project especially in regards to size. Some compromise may be a better approach as well - if you find that you may have dozens or a hundred modules grouping similar modules together is a practical approach.
More than one DLL for business logic and data access is fine, as long as there is a common ancestor that provides base classes to draw upon. Each DAL having its own configuration in regards to connection strings is a very bad place to be in. Likewise if one DAL uses a mapper pattern and another uses active record - while both patterns can coexist - these patterns should be provided in base classes.
Assuming your RDBMS supports multiple schemas I would first use multiple schemas before going to multiple databases. I go to multiple databases when the nature of the database changes - high transaction volume vs. high read volume (analytics). If you have transactions that need to go across modules and you've physically separated your databases managing these transactions may become unnecessarily complex.