Johann is… complicated
I reread his entry in the Companion recently, and I have to admit, he really was a good person before his accident. And after it, too. He used to hold seances for free if people couldn’t pay but they still wanted to communicate with their loved ones. And he really did want to help that one guy using his gift to show him the way to ‘the light’ and keeping him from falling into the hands of that demon.
I get the sense that even in life, Johann was fairly removed from his own humanity. He grew up surrounded by ghosts. He couldn’t communicate with them, but they were always there. That has to have some kind of effect on how a person views life and the people around them.
At his core, I think Johann was always a selfish person, whether he realized it or not. He has a strict code of morals and a strong belief in doing what he thinks is The Right Thing–ignoring for the moment the fact that he’s changing as the world changes–and I think his inward-facing life and rigid beliefs led him to develop a sort of selfishness that was, for the most part, harmless… until he hurt someone with it. (The widower and his wife.)
Now that he’s gone through losing a friend, losing his home town, gaining and losing a new body, being betrayed by a friend, learning that another friend may not be what he seems, watching the world fall apart in front of him, his sense of right and wrong has been challenged again and again. Nothing in his life is going right, even though he’s done the best he can do be a good person. And he’s angry and messed up about that, losing his trust in everyone around him, removing himself further from humanity and from the group so he can protect himself from being hurt any more, and the end result is him being an asshole and spying on everyone and being creepy and all that…
In summary of this scattered, probably unintelligible post, Johann is one of the most human characters in BPRD, because in some ways he’s a good person, in others he’s a bad one, and there is no way to really pin him down and give him a final judgment to define him or his life.