Buscaría agregar una columna a la tabla GroupQuoteItem, GroupQuoteItem.Priority. Esta columna se usaría en la consulta que determina el precio final. Si tiene N descuentos con la misma prioridad más alta, se apilarán uno encima del otro (el orden no importa, gracias a la asociatividad de la multiplicación).
Si todos estos descuentos de alta prioridad se eliminan posteriormente, los descuentos de menor prioridad pueden ocupar su lugar. Esto debería ayudarlo a configurar estructuras de descuento bastante complejas.
Espero que al menos te dé un lugar desde donde empezar.