Personally, I don't like aproach A. There are strong dependencies between these directory. Some of them are unneccesary and make dependencies difficult to manage overtime.
For example: A junior developer add dependence on UserRepository --> Shipment, but this is not desirable on design. The flaw is hard to detect(unless with careful code review) since repository does depend on model for UserRepository --> User.
But this is much easier in aproach B. We could apply some dependence-checking strategy on directory( forbidding user --> shipment).
The granularity of dependence management is very important. The cost are much lower if we could manage it at a coarser level by some automatic checking tool.