Be more strict on the types of KeyProperties, TypeProperties so resharper can tell that looping them multiple times is okay, simplify some other places we multiple-loop IEnumerables.