Yes about the incorrect message.
Injecting a service injects a proxy; what's happening is that the MasterObjectDispatcher is asking the TypeCoercer to coerce a value, the TypeCoercer is then using your contribution (the service proxy). Invoking a method on the proxy lazy instantiates the service, which needs the MOD and the TypeCoercer to handle your dependency.
TypeCoercer (and other contributions related to injection and the MasterObjectDispatcher) are finicky because they fall into a somewhat grey area between setup/startup of the Registry and full operation. That's the downside of trying to defining parts of Tapestry 5 IoC in Tapestry 5 IoC. In any event, you may need to make your dependency into your service implementation unambiguous ... use @InjectService there as well.
T5.1 does a great job of diagnosing what it was doing leading up to the injection error, could we see that part of the logging output?