If you are using lots of light objects, you should really look into branched path tracing. It will sample every light for every sample, instead of randomly sampling a light for each sample. the samples take more time, but they can be much cleaner.
regular path tracing (7 seconds):
branched path tracing (30 seconds):