Since you want two services which implement FooProvider you'll need to disambiguate either by serviceId or by marker annotation. See here for info http://tapestry.apache.org/defining-tapestry-ioc-services.html
Another solution is to instead use 2 service interfaces (FooProvider and FooOverrides). Tapestry often uses this strategy itself.