Warning: This is a potentially unstable version. If you encounter any error, please report it to me by copying the full error and giving any detail of what you did that could help me to reproduce it. Thank you in advance.
After a lot of work...
Completly changed the way data is collected and kept in memory. Menus are more dynamic, and the plugin less consuming server resources (CPU, RAM...).
Added _StaffReason_ placeholder in punishment reasons. This placeholder is replaced by a custom reason written by the staff who processes a report and selects a punishment that is configured with this _StaffReason_ placeholder. See an example here. (thanks to @Winter666 for the suggestion).
Added a protection for "in progress" reports: only the staff who marked a report as "in progress" and the advanced staff can access to it (thanks to @xemles for the suggestion).