Array with more than one empty is it possible?
Array + Curve Radius is the way; you just need to use duplifaces with the scale option instead of arraying the final object directly.

Setup a simple plane object and use the array as desired on it. This plane will only be used as "emitter" for the true geometry you wan to to array.

The array on its own will guarantee constant spacing. Then add a Curve Modifier and adjust the curve radius as you already described.

This will distort the plane, but not any duplis it may have, so now parent your true array geometry to said plane object with the array.

In the Properties Window > Object > Duplication turn on Faces, and tick the Scale option.