Why do you need such precise values? Are you planning to support extreme levels of zoom in your program?
Instead of 24-bit fixed-point values, could you use 24-bit floating point numbers? You could have a 1-bit sign, 7-bit exponent, and 16-bit significand (1.7.16 minifloat). Multiplying 16-bit values is easier and faster with the limited number of registers found on the z80, and the exponent will give you a much larger range of values. Such a floating-point value would be more precise, too, once the top 8 bits of the fixed-point value become zero (both will have 16 bits of precision at that point). This happens when it's less than 0.03125.
(Incidentally, this 1.7.16 floating-point format is the same as that used by some Radeon GPU's:
http://en.wikipedia.org/wiki/Minifloat)
You may even be able to get away with an 8-bit significand (1.7.8 minifloat), but that would probably give you a lot of visible artifacts in your fractals at all zoom levels (but it would be
faaaast!).
I'm quite familiar with working with floating-point values, so I can help out a bit if you want to go this route. It's really not much more difficult to work with than fixed-point (unless you want to implement all rounding modes, subnormal numbers, infinities, not-a-numbers, exceptions, flags, and other such goodies as found in the IEEE 754 standard but which are not needed for this application).