I ended up answering most of these myself. To add to Ben's response:
3) There are indeed headers available. The processor headers define these registers. In my case, using MQX 3.8, the registers are defined in MK53DZ10.h. You can access the 128 bits as, for example:
printf( "CPU Unique Identifier:\n" );printf( "0x%08X 0x%08X 0x%08X 0x%08X\n", SIM_UIDH, SIM_UIDMH, SIM_UIDML, SIM_UIDL );
4) To generate unique keys, I use the CPU ID as one of the block inputs to a 128-bit AES encryption algorithm. The cryptographic acceleration unit was a huge pain to get working, but it is now working well for me, and is used numerous times on each boot.