Well, you can change the emission shaders, a abit, you will only loose some color control over emission
Pack emission color in one float, leaving fragData2 green and blue channel free.
In the model shaders for emission:
vec3 e = texture(texture4,ex_texcoords0).rgb;
fragData2 = vec4(((e.r+e.g+e.b)/3),metalness,roughness,materialflags/255.0);
all other model shaders:
fragData2 = vec4(0,metalness,roughness,materialflags/255.0);
and lighting shaders just add this below where emission is sampled :
float metalness = emission.g;
float roughness = emission.b;
emission.rgb = emission.r*diffuse.rgb;
Ofcource, your diffuse have to colorize the emission now instead of the emission texture.