If I remember correctly, this bug used to work on old Interlude versions using PHX. Where you request to learn an skill, but in reality you send other skill through phx. Put there a check to verify if that skill that is beeing added belongs to that class. If not, simply ignore. If you want to use that method you specified, use it more times on teleport, certain actions, enter/leave zone... Although its not an fix but rather an shortcut to dealing with your problem.