The Sensor Multiplexer solves the too-few-ports problem, though it comes with its own sizeable battery pack.
http://www.legoeducation.us/eng/product/hitechnic_sensor_mul...
http://www.legoeducation.us/eng/product/hitechnic_sensor_mul...
I remember building a mux for touch sensors with some resistors and reading it as a light sensor.