Just for clarification, I (finally) got around to doing what I said I would do and implemented this correctly and sent an e-mail out to the list.  I squashed the commits back together for easier viewing, thus the single commit and outdated diff.

The void optimization is now only used for ints and strings. All other dtypes (including all floats) fall back to a structured array, which is slower, but should be correct.  

Thanks again for catching that!