Hi there,
The Guteneberg block editor is ( slowly ) making this easier to add this type of repeat content to your pages. With its re-usable blocks, that allow you to save a styled block of content and add them as you need to any pages.
We are also developing our Block Plugin that will vastly improve ways of adding styled content in a page.
Excluding using a pagebuilder, the other method is to use HTML in hooks, which yes is a little more complicated but no more difficult then what you have done so far with your sites.
For the Page Heros – actually in the past the system did rely on creating heros within the post / page editor. We moved away from this as although it seems easy to start with it become a burden if you needed to change all heros across your site ie. Edit every page or post.
If planned out correctly, then Elements can quickly automate your page builds. If you wish to use WordPress Custom Fields then they can be added using template tags:
https://docs.generatepress.com/article/header-element-template-tags/
So by using featured images and template tags you can build dynamic page headers without having to build them from scratch in each post.