usually one dbwr is enough to keep up with checkppint activity, dbwr writes every 3 seconds, data buffer reaches a threshold, checkpoint, no free buffer. If there are lots of activity and no free buffer you will face system waits.
Oracle doesnt only write when there is a checkpoint. A checkpoint doesnt only signal dbwr to flush the dirty buffer, it also sincronizes datafile headers, redo log headers, controlfiles with same SCN, timestamp