I know I'm missing something super obvious but I'm on this part and I don't see where payment2.addr gets created so of course it says it doesn't exist. I'm trying to submit the transaction on the testnet.
That is just an arbitrary address that you also control, in addition to the address (payment.addr) that the assets originate from. It can be any second, third, fourth etc address that you've created. Think of it as sending stuff from your wallet A to your wallet B.
In other words, payment2.addr is any address other than payment.addr