For the duplicate, you might try wrapping your SELECT() in UNIQUE(), it will remove duplicates - which will prevent the <<START from looping through them.
It sounds like using the UNIQUE() won’t help in this case because when using Start & End expression, it already generates a list of key column values, which are unique. In this case the 2nd Start & End expression is just filtering wrong rows inside of a table.. and they don’t have anything to do by each other. It’s just a loop inside of another loop.