Setup is not affected by clock speed. Setup for a given flop type is a function of the flop's design and the process it's made in. Setup values are in the library. Setup can be affected by input slew rate and output load of the flop, but not the clock frequency.
Setup does affect the allowable time difference between
two clock edges: the launch edge and the capture edge. So setup subtracts from the max possible clock rate.
Hold is also not affected by clock speed. Like setup, hold for a given flop type is a function of the flop's design and the process it's made in. Hold values are in the library. Hold can be affected by input slew rate and output load of the flop, but not the clock frequency.
The difference is that hold is related to only
one clock edge, the capture edge (relative to the data.) It doesn't matter how long ago the launch edge hit, the hold time at the capture flop is always the same.
So increasing hold time requirement doesn't directly subtract from max clock speed. But at some ridiculously high speed it is indeed impossible to meet both setup and hold, as in your example. But that doesn't prove that either setup or hold are a function of clock frequency, because neither depend on clock frequency as I explained above. If you doubt it, look in your .lib file and see.
I hope that helps clear up your confusion.
edit: also, note that hold time is how long DATA must be stable after the clock edge. So you could have a FF with 1ns hold time requirement and a 2GHz clock and, as long as DATA was a constant it would work fine
Same with setup really.