I've found that the Advanced Custom Fields solves most of the custom needs I get from clients.
I'm not a fan of Wordpress' innards. I usually avoid themes or plugins (other than ACF and a few 'crucial' ones). I'm not a fan of the theming system to the point where I often override or circumvrent the out-of-the-box queries and templating rules. I use my own get_partial() function that properly isolates my template variables and have even used React for the view layer once.
But I still use Wordpress quite often because 1) so many of my clients need exactly the features that wordpress offers, 2) they're familiar with WP and often insist on using it (and it saves me support), 3) I've found that the CMS-part of the whole thing is by far the most work, and building something as slick as WP' admin interface is just too much reinventing the wheel, and 4) there's still an advantage to being able to just run the site on 'typical' hosting (speed, pricing).
Furthermore, the inconvenience to me is a huge advantage to the client, because if they need small changes or additions they're now free to hire any (shitty) 'webmaster' to make css changes or install crappy plugins that magically offer them the features they need. These webmasters are a lot cheaper than I am.
All that said, I generally prefer the kinds of projects where I don't feel Wordpress is the right solution. But for a number of reasons the WP projects are still the most common and relevant ones right now.