How you model your data would depend a lot on the kind of queries that you want to do. Facets are good for retrieval but not suggested if you want to filter or sort using them. I will still try to answer these questions.
Since this is the case, and multiple facets are not supported on an edge, you should have an intermediate subscription node.
<customer_uid> <subscription> _:s1 .
_:s1 <product> <product_uid> .
Whether you add start and end date as facets or as edges would depend on what you plan to do with them.
Dgraph does support multiple predicates between two nodes. In the example below, friend and son are predicates between the same set of nodes.
<person_uid> <friend> <person_2_uid> .
<person_uid> <son> <person_2_uid> .
As Sai suggested, facets cannot be of list type.
Sorry, can you elaborate more about what you are trying to do here?
Facets are not suited for doing aggregations, filtering or sorting. You should have these values attached to a node to do these operations efficiently.
Happy to answer more questions.