I don't bother priming or keying the surface. In fact I don't even bother cleaning it unless there's anything obvious like tape residue which needs to go. I use Krylon sprayed from about 25cm in several thin coats. This turns out completely flat with no sheen at all, unless I have been impatient and sprayed a new coat before the last was properly dry to the touch and/or sprayed too much paint in a single coat - the paint builds up in pre-run-drop-stylee blobs which dry with faint sheen.
To protect the paint job I use Krylon Clear Coat - that is not quite as flat as the paint alone, but it is good enough - definitely still matte. TBH I haven't yet painted anything for airsoft which I really want to turn out as good as possible and if/when I do I expect I will clean the surface with meths/rubbing alcohol and use two coats of primer. But I reckon that patience is still the key thing in getting a good result. I will say this however, 2-3 coats of Clear Coat not only cover a variety of sins but make the paint job as resistant to wear as you're reasonably going to get from a non-industrial process.