TeamCity will let you set up dependency build chains, so that when Commons has a code change, it builds and then triggers a build in Data Access, and so on.
As for NuGet though, you just need to specify what version or version ranges of your dependency that your app can support. For example, DataAccess versions 2.x may support Commons from majors 1 & 2: [1.0,3.0)
I have not done this with NuGet, but have with Maven, which is very similar. When the build completes successfully, then TeamCity deploys the artifacts to the Maven repository, which I'm using Artifactory for. Maven + TeamCity will let you trigger a build when a declared dependency changes, and I would expect that they would have the same functionality for NuGet but that's just a guess.
I'm hoping that gets you pointed in the right direction.