What's difference between debugging spaghetti non OO code from debuggin spaghetti abused OO code?
both are terrible mess to debug, yet we aren't calling out ppl using (or even abusing) OOP
Nothing from my POV.
GOTO is more necessary (or even required) in procedural non OO languages because of fewer constructs to support modelling or structure. The OP mentioned redundant features, and in OO GOTO is redundant.
OO is a lot of things to a lot of people, but it's not "structured control flow".