Interestingly inheritance and information hiding were already available with structured programming. Hence they cannot be OOP faults. OOP only introduced inversion of control.
Imho, many of the rants about OOP are due to the fact many OO languages force you to use objects, inheritance and built-in classes when and where you should not. That’s a language fault, OOP isn’t meant to be used everywhere.
FP has its merits, but it has cons too.