However, lately the software world seems to be tilting in favour of other
paradigms like functional programming.
That is debatable. First, I don't see any other paradigms besides OOP and functional programming which are discussed that broadly, so I guess we can forget the "other paradigms like" phrase, let us talk about FP, nothing else.
The reasons why functional programming became so popular over the last years were discussed in other questions here in depth, I am not going to repeat this (see here or here, for example). But, in my opinion this is not because "OOP was a big mistake", or "Functional vs. OOP are mutually exclusive", it is more like people extending their toolbox and try to get the best of both worlds. Ok, there are surely experts which are hardliners favoring one over the other, but you will find those guys on both sides.
It makes me think, what about encapsulation and other OOP tenets? Are they wrong?
Encapsulation has many different flavors. Functional programming languages and language constructs provide certain forms of encapsulation, object oriented others. If you are looking for examples of encapsulation with functional means, start with closures.
Concerning "other tenets": no, they are not wrong, but for certain scenarios like high scale parallelization, functional approaches probably scale better. For other scenarios, like creating well designed UI frameworks, OOP approaches scale probably better (YMMV, I don't just have a better example at hand). Moreover, I am sure for most real world scenarios it depends on the knowledge and experience of the team with its favorite programming paradigm how well a certain system will scale.
Is it that OOP is applied wrong? For instance Alan Kay is noted for saying in the OOPSLA'97 Keynote: "I invented the term object-oriented, and I can tell you I did not have C++ in mind."
Surely OOP is often applied wrong by many people, but I am sure the same is true for FP. And I would be astonished if John Mc Carthy (designer of Lisp) had something like Javascript in mind when he was thinking about functional programming (mercy on me, don't flame me too much for that comparison ;-)
Joe Armstrong - "Objects bind functions and data structures together in indivisible units. I think this is a fundamental error since functions and data structures belong in totally different worlds."
I guess the inventor of Erlang has some good arguments, but he has also his very own point of view, so let him his opinion and build your own. There are lots of other experts which have a different idea of this.