How can I model direct ownership alongside group ownership?
A simple way is to make Companies sell only Bundles.
A Bundle can contain one or more Products
A Bundle has a flag that enforces "single product" and/or handling of it


Schema:

company
  company_id (PK)
  ...

bundle
  bundle_id (PK)
  company_id REFERENCES company(company_id)
  is_single_product
  ... 
  UNIQUE (bundle_id, company_id)

product
  product_id (PK)
  company_id REFERENCES company(company_id)
  UNIQUE (product_id, company_id)
  ... 

product_bundle
  bundle_id REFERENCES bundle(bundle_id, company_id)
  product_id REFERENCES product(product_id, company_id)
  company_id REFERENCES company(company_id)
  PK (bundle_id , product_id )
  ...

Logic to enforce (trigger, view, whatever)

  NOT "count(*) &gt; 1 FROM product_bundle JOIN bundle where is_single_product"


Variation which allows FKs only is_single_product to restricted_product_id

bundle
  bundle_id 
  company_id REFERENCES company(company_id)
  restricted_product_id REFERENCES product(product_id) (nullable)


Then the logic is "no rows in product_bundle if restricted_product_id is NOT NULL"

Edit, added company_id to bundle and products with super keys to push down "unique company per product"