We had a 100% similar issue with our site where there was too many layout shifting. We solved it using js and backend logic. We used the plugin https://afarkas.github.io/lazysizes/index.html . Its easy to integrate and written in vanilla js.
as it needs a source set we have also created source set for it. Aem core image component already have support for lazy loading
The markup will look like this
<div class="cmp-teaser__teaser-image">
<div id="image-f8e63405b9" class="cmp-image">
<img data-sizes="auto" data-expand="50"
src="https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:320&quality=10"
data-srcset="https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:480&quality=80 480w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:768&quality=80 768w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1024&quality=80 1024w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1280&quality=80 1280w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1400&quality=80 1400w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1600&quality=80 1600w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1920&quality=80 1920w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:2560&quality=80 2560w"
class="cmp-image__image blur-up w-full max-w-full lazyautosizes lazyloaded" itemprop="contentUrl"
data-cmp-hook-image="image" alt="Woman female engineer working checking inspecting product"
title="Woman engineer working" sizes="599px"
srcset="https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:480&quality=80 480w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:768&quality=80 768w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1024&quality=80 1024w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1280&quality=80 1280w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1400&quality=80 1400w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1600&quality=80 1600w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:1920&quality=80 1920w,https://example.com/transform/4654987-96938-8547-44/Woman-engineer-working?io=transform:fill,width:2560&quality=80 2560w">
<meta itemprop="caption" content="Woman engineer working">
</div>
</div>