The incident dashboard does mention creating a new node pool with the new version instead of upgrading - as a workaround. Curious to know why this was not an option for you.
Even if there are stateful workloads, one has to be prepared to migrate at some point. Nodes can crash, become unreachable, etc. - workloads have to be able to survive such events.
Edit: But I see your point - if their stateful workloads are not "migration/K8S-incident" ready, it's hard to suddenly build that overnight.