Правильно ли использовать Singleton для класса БД и шаблонизатора?
нет, не правильно
подключений может быть МНОГО, к разным базам.
объект шаблонизатор, если он в себе содержит значения, присвоенные пользователем, может иметь второй инстанс для обработки каких-то независимых кусков кода
ну и на тебе класс для БД -
database.phpinfo.su
Одиночка нужен только для тех случаев, когда в приложении может быть ТОЛЬКО 1 экземпляр класса. Например, объект Запроса и Ответа.