The idea of one or more process per se is irrelevant. You may use as many as you want. The issue is avoiding long comb paths.
The timing does not refer to process boundaries but to paths.
In your case I realised "joint" is assigned to output_register from input through reg1 and reg2 directly and in this case yes you are right but it could be the long comb paths are contributing to routing difficulty.
edit:
note that output_register is assigned conditional on wr_en and FA00F which both come from depth of three levels of if statements in the second process. That is causing your violation I believe.