Solution: Set the Expires header in Action code, and determine cache duration as a function of ResponseHeader (see Application.cacheDurationFromExpiresHeader).
Solution: Wrap Cached in another EssentialAction that adds the Cache-Control header and current max-age to the cached result (see Application.WithCacheControl).