You can fix this case with the same trick that you use to well-order the rationals. Put the $E$-classes of size $i$ into a column and well-order each column. Then move along the diagonals like so. But it's not clear to me what this looks like when you have any number of columns and rows rather than just countably many. I am not sure if it's
Edit to explain potential solution: It sounds plausible to me that sending an $E$-class to an $F$-class of the smallest available size that is large enough will avoid fatally wasteful assignments regardless of the order in which you make assignments. E.g., given an $E$-class of size $5$, if $F$-classes of sizes $4,7,$ and $9$ are available, choose one of size $7$.
The problem then is just how to iterate through the $E$-classes. This sounds problematic generally, but my knowledge of ordinals is weak. E.g., is there always some sense in which you can iterate through all the members of an initial ordinal?
Put the $E$-classes into an array like this one so that an $E$-class has an index (column,row). Let the index $(s,p)$ mean that $s$ is the size of the $E$-class and $p$ is its arbitrarily-assigned position in the column.
Consider the case where you have two wellat most countably many $E$-ordersclasses of each size and only countably many possible infinite sizes. That is, $p \in \omega$ and $s \in \omega \times \lbrace 0,1\rbrace$. That is, you have countably many finite sizes (tagged with $0$) and countably many infinite sizes (tagged with $1$). Then you just have two copies of the above array; one for finite cardinalssizes and one for infinite cardinals, and definesizes.
Separately snake through each of them in the overallway depicted in the linked picture. For the array of finite sizes, this hits indices in this order by alternating between these: $1_f,1_i,2_f,2_i,3_f,\ldots$$((1,0),1), ((1,0),2), ((2,0),1), ((1,0),3), \ldots$, where $1_f$ andthe $1_i$ are$0$ indicates that you're in the "finite" array. For the least elementsarray of the finite and infinite orderssizes, respectivelythis hits the indices in this (analogous) order: $((1,1),1), ((1,1),2), ((2,1),1), ((1,1),3), \ldots$. Here, $(1,1)$ denotes some infinite size such as $\omega$; $(2,1)$ might be $2^\omega$, and so on.
Finally, interleave the two orders that you got from snaking through each array. Most simply, you can take one member from each order at a time. This gives: $$((1,0),1), ((1,1),1), ((1,0),2), ((1,1),2), ((2,0),1), ((2,1),1), ((1,0),3), \ldots$$
I apologize for the somewhat cumbersome notation, but I hope that the pattern becomes clear.
Incidentally, you won't necessarily have an $E$-class for all of the points in the above arrays. E.g., you might not have any $E$-classes of size $2$. I am assuming the fullest possible case for simplicity, as it still defines a well-order when you remove some of the points.