Sorry for the continued delay answering your question. I'd still like to post a sample code for you to use for this, but I thought in the meantime I can give you a shorter answer about how to get these eigenvectors.
The high-level answer is that we have a function `arnoldi` in ITensor (C++ version 3) whose interface you can view in the file itensor/iterativesolvers.h on line 946. It takes two arguments: a generic type (which can be any type) which models a matrix (more on this in a second) and an ITensor "v" which is the initial guess for the eigenvector. The matrix object "A" can be anything, and just has to implement the A.size(); and A.product(v); methods. So for your case, A would be an object holding the MPS tensors which form the MPS transfer matrix, A.size() would give the linear dimension of this transfer matrix, and A.product(v) carries out the multiplication of v times the transfer matrix (which you can do with chi^3 scaling, where chi is the MPS bond dimension).
You can control the arnoldi routine by passing the named arguments MaxIter (integer) and ErrGoal (real number).
For performing time evolution of iMPS, there aren't any particular subtleties I'd point out. It really depends on which algorithm you are trying to do. Our MPS class isn't intentionally set up for infinite calculations, but it's perfectly fine for this purpose. I've used it a lot in the past for infinite methods. Over the next year, and primarily in the Julia version, we are planning to add more functions and algorithms more specifically tailored toward infinite MPS.
Best,
Miles