Like I said, you need a good library, and I trust the i2cdevlib.I forgot which magnetometer was included in the MPU-9150, but I assume that it is like other modern MEMS magnetometers.So yes, I think the MPU9150 is better, since the MPU-6000 is older, and the libraries at Sparkfun are older.The DMP is some kind of magic. It is a signal processing unit inside the chip.Invensense does not provide all the documentation for it.The MotionFusion and so on are pieces of firmware for the DMP.The i2cdevlib uses DMP firmware that is retrieved by reverse engineering.
ECL, EDA, AD0: http://forum.arduino.cc/index.php/topic,186516.0.html
I still prefer this sensor.
In this case I like the Adafruit IMU 9DOF and 10DOF with the libraries more.You can't go wrong with those Adafruit IMU boards.For myself I would use the MPU-9150.
It has as extra a level shifter for the I2C bus, so you can connect it to a 5V I2C bus.
A level shifter has a 5V I2C bus as input and makes it a 3.3V I2C bus. The conversion is in both directions.Suppose you have pull-up resistors of 4k7 to 5.0V. That makes it a 5V I2C bus, because the SDA and SCL would climb up to 5.0V if those signals are not pulled low. So when you connect a 3.3V sensor to that bus, the current via the 4k7 pull-up resistors might flow into the sensor, and damage it.There is an endless discussion when you need a level shifter and when you don't:http://playground.arduino.cc/Main/I2CBi-directionalLevelShifterWith a level shifter you have both a 5V I2C bus and a 3.3V I2C bus. You can connect any I2C device to the proper voltage I2C bus. In the sketch there is no difference because the level shifter is fully transparent and no barrier at all.