I won't argue that there is spaghetti code, that is would be great to use PHP Documentor, that OOP would be nice to use in more drupal places, or that Drupal may slowly drive you mad I will say that understanding some of the patterns in Drupal may help you get it a little better.
For example, Drupal is architected not to be MVC and it should not go there anytime soon. Drupal uses the PAC pattern for its top level architecture. This is further development on MVC and enables more complex UIs than MVC can easily accommodate.
Drupal hooks (most of them) are the observer pattern. Since PHP is new and fresh on every page load having them use a naming pattern rather than registering them on each page load is great for performance.
Projects like Movico try to bolt on a different architecture to Drupal rather than working within the one that already exists. If you want to see how you can do OOP well within the Drupal architecture I'd suggest taking a little time to look at the Views module.
