I wrote a C++ library called v3c-raspi.
You can download it from SourceForge.
I wrote an example program that tries to do just what you want, called "i2s".
Unfortunately it experiences a "program anomaly" anywhere from straight away to a couple of seconds after it starts - it looks like something else uses dma channel 0 and leaves rubbish in the block address register.
I could get the Raspberry Pi to process about 16 million DMA control blocks per second (in another test).
The i2s microphones I'm planning to use are the Analog Devices ADMP441 which output 24 bit audio.
At 48kHz that's a bit clock frequency of 48000 x 32 = 1.536 MHz.
The code toggles the clock using dma as well, so we double the frequency to 3.072MHz.
Add in PWM pauses and you double the number of control blocks again to 6.144 million, still well within the 16 million I could get out of the rpi.
I reported a bug about this very issue to Raspbian but no responses yet.
I solved most of the problems - see linux-rpi-kernel mailing list 2013-November, message 000734 for more.
It's limited to about 2M samples/sec so you could capture 22.1 kHz samples from 8 stereo pairs with it.