If you want to add actions to the player (in SP or MP), do not do it via an init field. Instead, do it via init.sqf:
// Run from init.sqf with:
// [] execVM "addBeastAction.sqf";
if (isDedicated) exitWith {}; // Don't run on server.
waitUntil { alive player }; // Wait until the player object is created.
player addaction["Beast Recruits","scripts\beast.sqf"];
Although this seems like more messing about than when you just add the action to one player in SP in the init field, it makes considerably more sense in MP, since the code is only in one place (the file) rather than having to be repeated on every object. Any alterations or additions to the code are also much easier, since you don't have to edit all those init fields.
I'm not suggesting you use this method, but your original code could have been simplified as:
if (player == this) then { this addaction["Beast Recruits","scripts\beast.sqf"]; };
Which means that you could use exactly the same code in every init, rather than having to ensure you had the correct name of the object in the code.
You still have the issues regarding the MP nature of the of playMove command that nominesine mentioned, of course.