As a preamble, I would not expect that splitting $E$ into real/imaginary parts is very profitable. Normally, block 2x2 systems are motivated because one block of unknowns is "easier" to solve than the other in some sense (better conditioned? smaller in cardinality? etc). This is not the case for time-harmonic <PERSON>, I think you'd be better off remaining in the complex field. If you can't do that (maybe these frameworks don't support complex variables?), the next best thing would be to probably "interleave" the real and imaginary parts and use point-like preconditioners with two degrees of freedom (1 real, 1 imag) per point. I'd expect this to have the same effect as working in the complex field to begin with.
All that said, a lot of classical preconditioners that you might try at this point (smoothing, incomplete factorizations, multigrid) are not very effective on time-harmonic Maxwell, because it has basically the same spectral properties as the (bad) <PERSON> equation: unbounded spectrum, indefinite, oscillatory in nature. An excellent survey of these troubles can be found here, you can basically apply the same arguments to time-harmonic <PERSON>.
In fact, <PERSON> is even a little more difficult in two ways. The minor way is because it's vector-valued and thus has more unknowns than a <PERSON> problem of equal size and wavenumber. The major way is that <PERSON>'s $\nabla \times \nabla \times$ operator is more complicated than <PERSON>'s $\nabla \bullet \nabla $ operator, because of the presence of an infinite dimensional nullspace. 976
<PERSON>'s gradient operator has a one dimensional nullspace (spanned by the constant function $1$), but <PERSON>'s curl operator has an infinite dimensional nullspace (spanned by the gradients of scalar functions $\nabla f$). Many preconditioning schemes rely upon "coarsening" the problem down (in a multigrid sense), and the <PERSON> equation enjoys that its nullspace (the constant function) can be approximated with no error on any grid that is arbitrarily coarse. In contrast, when you discretize the <PERSON> equation on a fine grid, the nullspace of the discrete operator will not be exactly representable on a coarser grid, and thus your exchange operations (restriction/prolongation) must be more carefully constructed (otherwise you are likely to take exactly-zero eigencomponents on one grid and map them to close-but-not-quite-zero eigencomponents on another, which wrecks convergence .. see here for some discussion).
On a less pessimistic note, a reliable FE solver for low/medium-wavenumber time-harmonic <PERSON> is an excellent tool to have in your pocket, because it can be readily hybridized with high-wavenumber methods (modal expansions, integral equations, asymptotics, etc) but complements their deficiencies (unlike FE, these methods typically only work for homogeneous media). Along those lines, the two approaches I've used most successfully for solving <PERSON>'s equations iteratively are (i) p-multiplicative-schwarz (pMUS) and (ii) domain decomposition (DDM).
The former (pMUS) is basically multigrid, but applied in polynomial order (p) instead of mesh size (h). The basic idea is to use a low order p=0 solution to precondition a high order p=(0+1+...) solution. It's easy to implement, but requires some formulation-level effort to tabulate your (Nedelec) basis functions in such a way that they separate the nullspace/range of the curl operator as described earlier (see this paper for a good representative in this class of methods).
The latter (DDM) is basically a deflation-like scheme, wherein you partition space into non-overlapping domains, eliminate/substructure away the interior unknowns, then solve the resulting interface-only problem to re-establish the correct field continuity / global solution. Much thought has been put into the right kinds of "transmission conditions" that should be used to terminate the subdomains and match them back together, much of the work on <PERSON> has been adapted from similar work on the Helmholtz equation. See here for pioneering work on Helmholtz, and here for its evolution into <PERSON>. 768