There are a lot of assumptions here and a lot of reasons on why, I'll try to break it down:
It's a historic thing
Animations as we know today, from complex Bezier-smoothed transitions to dialog pops are very recent.
Back in the day, in early computer software development with UI's designed on Delphi, Java and native, we had absolutely no animations(at least done easily), we had to deal with hardware acceleration in order to produce animations as we have today, that translates directly to giving the GPU/CPU manual instructions on how to animate something, while today we can just call transition: 0.3s;
on CSS for example, we had to do manual complex matrix translations that could work on some machines.
And it wasn't worth it.
Maintaining something like that was a nightmare and we had no reason to do so, on regular software there was no reason(and time) to include visual jibber-jabbers since cases where a loading indication was necessary, a loading spinner would perfectly do the trick(of indicating that something is going on).
Keep in mind that at this point, we are talking about something that happened in less than 15 years back, so it's very recent.
On 2008-2010, animations started to come alive, check iOS 1.0 and Android 1.0, they had very limited animations, we had to work with hardware constraints, battery constraints and complex coding in order to achieve that, that's when animations started to boom, but here we are talking about mobile native experiences, you question is about the web.
The initial specification of the CSS animations was created on 2009 but it was only on 2011, 2 years later, that Firefox added the initial implementation for CSS animations, before that, we used JavaScript animations, that had the same issues as mobile stuff, compatibility and performance issues, keep in mind that fast super-charged computers are also very recent, and even now, a lot of people still don't have access to it.
While we had to deal with a constant evolving technology, we could include animations since it was easier, the abstraction level was raised to high-level languages and we didn't have to worry about low-level stuff anymore, but time, performance, compatibility and social constraints didn't allow us to delve deep. We had more immediate concerns.
At this point, we are talking about a 8 year difference from where we are now, it's the same age as a child.
So from a historic PoV, animations and fluid motion as we know now, are VERY recent, so adoption is still ongoing.
The specifications are also constantly evolving and shifting, there's always the risk of adopting and implementing something that could break or become obsolete in just a few months.
Do you really need it?
You mention Amazon product photo transitioning as a bad example, why is that bad?
The information appears immediately on the screen, there's no delay, even minimal, this is ideal, there's no reason to make the user wait for something when it's ready. Some fading and easing would be nice? Yep, but that does not make the experience "horrible", animations are not mandatory, on the contrary, they should be used with caution.
If something does not use animations, that does not mean it's "horrible"(as you call it), sometimes, there's no need to, that involves usability and even the next topic:
Hardware/Software constraints
Let's take Amazon, as you mentioned, they barely use any animations, some of the reasons I can think of are:
- Compatibility: Did you know that roughly 6% of the US still uses Internet Explorer? Those are still possible customers for them, they just can't dump compatibility and force them to update, they won't if they haven't done it at this point. Also, most people hardly update their browsers, so the latest cutting-edge features could be not available, I can take an old friend for example, he's stuck on Chrome 35(2014) and refuses to update, because it just 'works'.
- Hardware limitations: I can't speak for the US since I never studied their market, but here in Brazil, there are A LOT of people using old devices like iPhone 5, last time I checked on my user-base, they summed up to 15%. For the same reasons of Compatibility, we can't dump those users, they still generate revenue, but we are forced to keep things compatible for them, this includes not forcing sluggish animations on their old hardware, this will make their experience "horrible".
- Maintenance: One could argue that you could make different versions for updated users and legacy users, but from a programming standpoint, this is hard to maintain, specially on a constant cross-platform development world, also, doing two versions would hurt layout and brand consistency. Not to mention the development costs.
TL/DR
- Legacy devices,
- Compatibility,
- Development costs,
- Historical reasons.