Tbh I'm torn here, since hourly rates are really good for preventing scope creep. Where as per-project flat rates aren't great because they practically invite in scope creep.
I do think that retainer models for independents may very well be the future and are a nice happy medium.
That said, your point about "if you and your customer working together can’t define the tasks, put them in order, and assign values to them then you’re not doing the necessary requirements gathering and analysis" is tough because often times your customer doesn't want to pay for that. Curious, how do you get around that?