At one point I'd heard of some sort of issue with iOS 9, but I am not sure that the one I heard of is the same as what you encountered. At the time, I was using my 6s Plus on 9.0.1 because it was jailbroken.
The issue I heard of was that Apple was forcing upgrades because you'd restart and then be presented with the Hello screen and there was no way to get out of it without upgrading the phone.
The problem in that particular thing was that somehow the setup app was being triggered on reboot. It's actually an app and your iPhone remained jailbroken and in its normal state. But there was no way to kill the app and get back to the springboard. Thus, a forced update. The solution was to use iFile or some other file manager to locate the setup app and either rename it or delete it. iOS was hardcoded to look specifically for the filename of that app, so renaming it or deleting it caused the issue (bug?) to fail and you went on your normal, merry way. There was even a JB tweak developed to do this for you.
I'm just not sure if that had any relation to the issue you describe.
It’s that issue, but you don’t have to restart. Some people may have triggered the issue by rebooting, but some devices (like mine) would reboot by themselves. Funnily enough, there was an issue on iOS 9 in which A9 devices would respring by themselves. My iPad would occasionally respring, but it did that ever since I got it. This issue was fixed on iOS 10, so when it happened, I initially thought “this again? Alright”. I panicked when it booted into setup. I have an iPhone 6s on iOS 10.0 and it has never resprung like that. It was definitely fixed.
Yes, that is exactly the way to fix it: you have to be jailbroken before it triggers, and the solution is to rename “setup.app” to anything else, because iOS looks for the setup.app whose name is hardcoded, so if the app is renamed, the issue is never triggered. Of course, to rename the app to need to be jailbroken and you need to rename it before it triggers. Once it does, you’re doomed. I wasn’t jailbroken, so once it triggered, I had no options. I tried to forcibly exit the setup.app with a tool from the jailbreak community (I thought, worst case scenario, I break it and I have to DFU restore), but when the tool tried, the iPad would reboot a few times as if it were on a boot loop and then boot right into the hello screen again.
Realizing I had nothing else to try and this was my only iPad, I updated. This happened five days before the release of iPadOS 13, which I was (in hindsight, rightfully) scared of, as it was a large update. I thought “iPadOS 13 will destroy performance and battery life even more”, so I took the loss and updated to iOS 12 before iPadOS 13 was released.
1st-gen iPad Pro users reported iPadOS 13 was the beginning of the end in terms of both performance and battery life, with extensive slowdowns and keyboard lag and battery life irreversibly plummeting to a little over half the battery life I had on iOS 9. iOS 12 is much better than that, so glass half-full, I’m happy I did that.
I considered waiting until someone came up with a way to bypass it, but I thought: “I wait, nothing comes up, and I have to update to a worse version, and I’ll definitely regret that”.
If you asked me today, I would’ve updated it to iOS 10.3.3 when I had the chance and call it a day, but I don’t have a crystal ball. The iPad worked flawlessly for three years. I’d first read of the issue in early 2018. Why in the world did it take over a year and a half to trigger on my iPad? Who knows. Random luck. I thought I was safe when it’d been months since it showed up and I hadn’t been affected back then.