I would suggest you consider drupal as a basis for your fully custom sites. You start out of the box with a well supported, standards based system for the basics: user management/authentication, data modeling/storage/query, routing, path handling, HTML templating etc etc. It has a huge ecosystem of modules, also effectively out of the box, for third party integrations and all sorts of esoteric requirements. So you start writing your custom code on an established base with a strong API for modification and integration, which means less custom code to support.
In a Drupal custom module you can do or change literally anything, and you can write whatever architecture you like for your individual component. You just have to integrate with the Symfony2 router and dependency injection container. Pretty cool stuff.