This might be a contributing issue, but it seems this is far from the only reason why Android has such shit upgrade lifetimes.
Android itself doesn't have a strict requirement for an updated kernel. It will typically run fine on the original kernel tree the SoC launched with.
OnePlus occasionally does this, they are currently rolling out Android 10 for the OnePlus 5 and 5T, based on the original kernel tree. That's a 3 year old device (and I hate that I'm using a 3 year old device as my best example)
It seems like most Android vendors simply choose not to offer extended updates.