What is the best way to apply production changes (DML & DDL) in an environment with thousands of databases?
In very high level, I would suggest two points (which I always follow)


Automation: highly recommend to use PowerShell to do the various change implementation steps. 
Rollback plan: always have a rollback plan in place, but rollback can be in different ways, such as backup &amp; restore, creating a snapshot, recreating an object using pre-implementation version etc.


But in my experience, some very tricky work is security related issue, such as dropping a view and recreating it, all the previously granted permissions are lost, usually, this is not known until users start to complain. 

Anyway, your sql environment and your business requirements will play key roles in your Change Management strategy.