I'd calculate the horizontal point spread function for each color channel separately and use the spectral sensitivity ratios of the channels for frequency calibration; the resulting sensitivity-weighted spectra should obey the same ratios.
Deconvolution can be implemented as frequency domain division of each diffracted row by the corresponding direct transmission row. The division results can be averaged over all rows, excluding from statistics any noisy bins that came from division by a value too close to zero. Hopefully the rows differ enough to cover all frequency bins. Combining the color channels at the end further reduces noise.
For this to work properly, the image should be corrected for any distortion and rotated so that the point spread function due to diffraction is fully horizonal. Chromatic aberrations will be hard to fix.
A completely different approach would be kind of a matching pursuit, which should work quite fast thanks to the spiky spectra of fluorescent phosphors. There you'd try to pattern-recognize what position in the diffracted image is most similar to an intensity-scaled copy of the direct transmission image (using a color appropriate to that position, according to a calibration). Then you'd subtract the match from that position in the diffracted image and simultaneously accumulate an estimate of the spectrum. You'd repeat the process until you'd get good enough an estimate, or would no longer be able to find a good match. It should be possible to do image geometry correction in the pattern recognition part of this approach, which would also be able to avoid problems due to chromatic aberration.