Update based on brad's feedback

Add an explicit else around the code that didn't do anything for zippered
cases. For zippered cases I was calling tryToReplaceIter on an iter that was
known to be a tuple. It wouldn't do anything, but this makes it clearer what
the intent is and avoids needless work.

For zippered iterators we used to always replace each element of the tuple,
even though most times it was just replacing itself with a copy of itself. This
avoids always replacing, and creating a copy to pass in.