[#651] Restructure cache key creation

* Changes based on review from @iperdomo
* Default cache key created in `BaseDAO` and can be overriden in specific `BaseDomain` DAO class
* Throw `CacheException` and log cache exceptions