IMO, you need multiple models. The product model (or the "this team owns X" model) force a commitment to an area of work that doesn't always align with business needs. The project model is terrific for aligning people across skill sets, but doesn't do as well for ongoing work and tends to push staff from project to project (vs building deep experience), which can work well for generalists but not for everyone.
I see the actual problem being that management is rarely simultaneously deep enough and strong enough to make the right choices around work organization so everything just defaults into hierarchies.