Is the component Foo self-contained? I mean does it have its own solution and repository (or team project or dev branch)? As such, it can have its own development flow, lifetime, versioning and release schedule resulting in a NuGet package.
When you require the sources for development convenience, simply branch the Foo project into your current workspace and add it to your solution (or create a new one for this purpose). Modify what needs to be done during development, reverse integrate/merge
your changes into the Foo project's home branch and make a release. Once modifications have been released, don't forget to consume the NuGet pkg again :)
This setup also facilitates changes being made simultaneously within the context of solution A and B separately, each in their own branch, and as such avoid release bottlenecks.
Using TFS, you can play with workspace mappings & branches. Using a DVCS, you achieve the same using repositories and local clones.
If all of this seems hard, then another question might pop up: what is driving change in Foo? Does the change belong in Foo, or should Foo be extensible enough to accomodate the change in the consuming project?
This approach has proven to work for me. Maybe it works for you as well.