The server can't completely ignore the player, as it would have to adjust the embedded timestamps to be consistent with the skip operations, or otherwise the player won't show the video. In other words, the server would have to act as if the ad is embedded wherever you skip to in the video. Not only would it mean that users lose their position in the video when they try to skip, since after the ad it would continue in a different place, but it would also mean that timestamps don't uniquely identify positions in the non-ad parts of the video anymore, which is a nonstarter in many ways.
JS on the client (which is already required) can be instructed by the server to manipulate the timeline. You could zero it out completely (or stop it from moving at all) while an ad is playing and then return it to the right spot after, this is not rocket science.
For JS on the client side to be able to behave in the way you describe, it has to be informed by the server about the unskippable parts. Thus browser extensions are informed as well, and can take action correspondingly. In the worst case, they’ll behave as YouTube’s new hold screen does now.
Anything that JS on the client can do is also under control of browser extensions. We are talking about YouTube’s options under that constraint.
I don't think there's any reason the JS would have to know ahead of time, and the server still controls what video fragments are served when, so I don't think JS can be reliably used to skip ads that are embedded in the video stream, especially if the download speed is limited to somewhere close to the playback speed.
When the player performs a skip, it waits for stream packages whose timestamps match the new position after the skip. It’s the client who requests a different segment of the video, and waits until it receives the respective segment, as identified by the embedded timestamps. Skipping isn’t a purely server-side operation in that sense, the client side has to cooperate. The server has no control over which timestamps the client wants to play.
The only other alternative is to make the video a live stream of indefinite length where the user can’t skip forward beyond the farthest point they already played.
I'm not sure what point you're trying to make, or how it invalidates anything I said already. Not trying to be rude, I just don't understand where you're going with this.