On your second question, yes that would work, but you don't need the "math.floor", and you should probably store the results of "player.GetAll()" so you don't have to evaluate it twice. For our more advanced users on the forum, yes, I realize that LuaJIT may optimize that out anyways, but you might as well get it right the first time.
For your first question, it's unclear why you are using both these hooks at all. For example, ULX's mute only uses PlayerSay and accomplishes its task fine. But to more directly answer your question, ULib's hook priorities are only useful within the same type of hook -- they do not designate priorities between different hook types. As an additional note, "return true" in the first hook is a faux pas. By returning a value unnecessarily, you block other hooks from running after you.