Any agile methodologies will tell you to keep the features small and talk to your teammates regularly. Also, any good backlog grooming should contains evaluation of inter-dependance between features so special care is taken in those scenarios.
So I definitely agree with you that long lived branches are a nasty thing. However, I don't see were this has anything to do with git branching, gitflow or feature switches. Also feature branches allow to validate the team's "definition of done" in code review before integrating a features, so the team never have to put any feature in production that would lack test coverage, documentation or whatever the team deems important.
I suggest you to take a look at the INVEST mnemonic trick, to evaluate your backlog stories.
We’re a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.