TeamCity 8 shipped with the Shared Resources plugin built-in and supported. It allows you to create a Shared Resource on any project in the hierarchy and under Build Features of a Build Configuration you can define what Shared Resources need to be available for the build to run, otherwise it'll be queued until the resource is available and a lock can be taken.
For more information, take at look at the TeamCity documentation: http://confluence.jetbrains.com/display/TCD8/Shared+Resources