Unity does take some time to fully understand, because of their Component based programming.
Doing it all through code took me a bit to grasp, but I've reached a comfortable equilibrium.
I have only a few game objects in my scene (mainly managers, such as level, player, camera, sound, ui, etc, but most can be placed on a common master Manager game object). I do most everything else via code, because I can follow code much easier than the hierarchy of game objects and how they interact. That's why I started with GLBasic way back when!
Each code / class / component file is independent of the other classes, which does make each one easier to understand and adapt. The trick is to make each class as generic as possible, and not rely on other game objects / classes needing to be present or configured a certain way. I've even created a UI creating class, and create all my menus via code that runs the moment a menu is required, very clean and simply to modify. Plus I can use common constants such as ButtonWidth, etc.
As far as games looking similar, well, that may have since changed with Unity 5. It uses a different shader system which seems more adaptable. Games before 5.0 would use the standard Unity shaders (unless you bought or created your own), which would make games look alike.
And Unity is now Free, even their iOS and Android platforms. Heck, they even combined the features only available in the pro version into the free version, so you now have no limitations. Even less reasons to need the pro versions.