the trouble with finding an "eigenbasis" is that, sometimes you can't. the trouble isn't that an eigenspace (the subspace generated by the eigenvectors corresponding to a particular eigenvalue) can have dimension > 1, but rather than the dimension of such an eigenspace can be less than the algebraic multiplicity of the eigenvalue (this happens when the matrix isn't diagonalizable).
so two matrices can have the same eigenvalues, with the same (algebraic) multiplicites, and yet not be similar.
put another way, in some "nice cases" one can use a diagonal matrix as a "nice form" (similar to) a given matrix, in which case the eigenvalues essentially tell you everything you need to know. but there are what you would call "degenerate cases" where you need to know more to know "which type" of matrix you have. this "something more" is captured by a class of matrices called nilpotent, A = D + N, where D is (similar to) a diagonal matrix, and N is nilpotent.
similarity is just a non-basis way of saying: change the basis. if A is a linear transformation in one basis, PAP-1 is the same transformation in another basis. if the eigenvectors of an nxn matrix are all linearly independent, then we can change A to a matrix that "stretches every dimension by the eigenvalue λi."
(this is A in the basis of eigenvectors).
but we might not get enough eigenvectors. for example C =
[0 1]
[0 0], has eigenvalue 0, with characteristic equation det(C - xI) = 0 of x^2 = 0, so the eigenvalue 0 has algebraic multiplicity 2. but the eigenspace
E0 = {(x,y) : C(x,y) = (0,0)} is span{(1,0)}, which has dimension 1.
compare C to the 0-matrix, which also has the same characteristic equation, but is definitely not similar to C. C is one of those "bad" matrices, the nilpotent kind, that have the same eigenvalues as some other matrix, but aren't similar to them at all.