Build Dependency Question

On my current project we have two build trees, but they are not entirely separate. Build tree A knows nothing about Build Tree B, however Build Tree  B has dependencies on projects in Build Tree A.

The problem we encounter is that the Build Trees are run on different build agents and the output of Build Tree  A is only made available to Build Tree B when all of Build Tree  A builds successfully.    When a change is made to a project in Build Tree B that depends on a change also made in Build Tree A it can be hours before Build Tree A builds successfully all the way through and in the meanwhile Build Tree B fails until assemblies from Build Tree A are updated with the dependent change.  This is because the change in Build Tree  A ins’t made available until all of Build Tree A builds successfully.

I’m trying to work out solutions, the first that comes to mind is separating out the projects that both Build Tree A and B depend on that are in Build Tree A and create a third and shorter build Tree with only these assemblies.  Allow both A and B to be dependent on this much smaller third Tree, then wait time for synchronization of dependencies for Build Tree  B for items not in Build tree B become significantly less.  Another idea was simply to have all output from from assemblies in Build tree A that Build tree B relies on be immediately made available to Build tree B when they are built, regardless of whether they causes issues for the rest of Build tree A.

Any thoughts on a better way will be greatly appreciated via twitter @binzleyTwit.