The freeze seems to be because the menu is destroyed with the default cancel, which doesn't advance the cutscene you're in. can_destroy is turned off just to prevent this by default, but you could add it in as a separate destroy script as a failsafe:
In msh_spawn_namingmenu at line 10, insert a new line:
script_destroy = csc_proceed;
Also insert the same line at line 3 in cc_shrinerename.
Now the menus should proceed the cutscene even if destroyed early.
For back sprites, there's a macro mond_SPRITE_BATTLE in init_constants. You'll want to add a new mond_SPRITE_BACK macro with an unique value, go to init_monster and add a new line after line 5:
global.monster_data[argument0,mond_SPRITE_BACK] = argument2[2];
Now go to init_monsters and add the back sprite to the array of sprites that get passed in for all monsters.
To actually read the battle sprite, I think the cleanest approach is to edit monster_get_battlesprite. Check if the AMP-ID passed in is in the "enemy" region ( >= AMP_FIRST_ENEMY), and if so return the mond_SPRITE_BATTLE sprite, otherwise return the mond_SPRITE_BACK sprite.
