So if all stores have all services you'll have just over 3000 entities? I would go with DDS. Don't worry about the empty columns, your object will have its own view in the database which joins the definition with the data so that what is returned to the DB client is just the fields that are on your object. And you get caching for free without special implementation so most fetches will be from memory if the data is used often (and if it isn't used often you have no problem anyway).
I'm implementing a function to edit open hours for a customers stores. There are 400 stores with 1 to 8 services each which may have different openhours. This leads me to an entity with 38 fields to handle all requirements. Should I use dynamic data store to save this entity or should I create a new table in the database? Saving this entity in tblBigTable with dds generates 4 rows for each service in the database. That is 68 columns on each of the 4 rows(272 cells) which most of values are null. I only need 38..