What i did with my fan controller was to control the fan speed with a software PWM (Only 8 Channels)
I used the fan sense of the fan with a pull up to VDD, then when it came time to measure the fan speed I set a timer running, stopped the PWM of the fan, then timed three pulses from the fan sense, restarted the PWM and calculated the RPM from the average duration on the pulse width. This gave quite a stable RPM reading. If your using PWM to control the speed of the fans you have to stop the PWM before you measure the RPM otherwise you will get false readings from the PWM on the sense wire of the fan. As your only stopping the PWM for a small friction of time, the fan dose not have time to slow down before you have finished timing the pulses.
Edit: oh i had trouble controlling 8 fans with PWM and reading temp sensor and fan speed with the PIC i used. I got it wrong when i told you i used the 18f4550, it was in fact a 16f877A running at 20 Mhz. You have to run quite a fast PWM frequency to stop the audible noise from the PWM, i only just managed this with the 16f877. The PIXAXE just wont cut it for 17 Fans. For so many fans id suggest running maybe one pic for the display and the control of the system, then daughter boards running maybe 8 fans each with thier own PIC. To run 8 fans with pwm, you will need 16 IO's. 8 for the PWM and 8 for the RPM sense. So 17 Fans is going to cost you 34 IOs then maybe 8 for the LCD and another 3 for the Touch screen. Simple not possible on the PIXAXE.
BIG TIP: Start small then expand on what you have learnt