20 analog Output pins

You go with the expensive solution which btw won't fit all lights.

For leds and incandescent bulbs, Pulse Width Modulation -IS- the dimmer that switches FET's ON and OFF where they are efficient -BUT- you have to match the voltage switched to the light source used.

Lights need current to light. Leds need small current and incandescents, halogens and like gobble up lots of current.
Electronic components rated to take lots of current cost lots more but that's the turf in retro-land.

All those lights should be able to do PWM. Fair chance that somewhere hidden in your existing dimmers is a triac, which is the most common way of dimming AC power. The result is what in the DC world is indeed known as PWM.

So basically you have two solutions.

  1. you can try to control your existing dimmers with a 0-10V signal, using a DAC.
  2. you can replace the existing dimmers with something that the Arduino can control directly. I have seen circuits out there of Arduinos controlling triacs to dim lights - never tried it myself, so no idea how this will scale to 20 of them.