Here’s a simple statue script, which you can call from the OnSpawn event script:
// Petrify creature as a "statue" which hostiles will not attack
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectPetrify(), OBJECT_SELF);
That automatically suppresses conversation turning and other movements.
There is also a Frozen Animations mod which allows you to freeze the creature in position at some point during an animation - you might want to borrow / tweak some of that code.
Coming back to the simple case, petrification doesn’t persist when a saved game is loaded, unless the module load script has a tweak like this:
// Fix a bug where statues load unpetrified
int i = 0;
object oStatue = GetObjectByTag("Statue", i);
if (!GetHasEffect(EFFECT_TYPE_PETRIFY, oStatue)) ExecuteScript("bh_statue", oStatue);
oStatue = GetObjectByTag("Statue", ++i);
Frozen statues are a little bit buggy visually - occasionally the player will see the true form for an instant on first encounter, and on death - but that’s about as good as it gets.