You're mixing two concepts: the ORM object cache, and a data cache.
The ORM by defaults caches all results (all model objects) in memory by primary key, so that if you fire two queries that have the same record in the result set, the same model object is returned (as opposed to a different object with the same contents). This means that if you change a property in one result, it is also changed in the other, in other words, the object data is consistent. Also, a find() by primary key will return the cached object if present instead of executing another query.
The downside of this is two-fold: you actually may not want this behaviour, and if you process large amount of records, for example in some sort of batch operation, you may run out of memory. To deal with this, you can disable this behaviour on a per-query basis using from_cache(), or globally through the orm config file.
Data caching is done by the Cache class, which sorts a data stucture in local cache storage where it can be retrieved later to offload (in this case) the database. The ORM has no built-in support for data caching, it indeed doesn't support the cached() method from the DB classes. I admit it might be a handy addition.
At the moment, the only way to cache data from an ORM query is manually: