I used to work with skin but it is not safe, even with community patch which prevents losing the skin, with the way how it works you cannot be 100% sure the skin is not lost due to some coding error in horse system or some other issue. Best to use 1x1 miscelanious item in inventory. Maybe not as clean but prone to errors.
If you want to avoid even that 1x1 item you need to use database. Either SetCampaign* functions (in EE they shouldn’t be that slow anymore) or SQL databases via NWNX.
Btw, regarding the disable effects, this is problematic to record because of various factors.
Vanilla nwn is missing the function to retrieve effect value, ie how much constitution did the poison drained or how much ability stats did curse drain. This can be workarounded to some degree but then again, you cannot really apply disease/poison to player again. This is because each application will run the initial saving throw again and apply the penalties only when it fails. Additionally it will start the secondary effects timer. I recommend to store ability values when logging out instead, if they differ in time of login apply ability decrease effects to force the previous values.
Another issue is that unless you use EE or nwnx you cannot get remaining duration of the effect which can be important for disables. Of course you can just apply it for specific value like 5 rounds instead but it is not clean. Btw, the effect timers are running while is player logged out. But I suppose you know that hence why are you asking for this.
(And there are dozens of issues with diseases, poisons, curses and ability decrease immunities, some are solved in community patch, some needs nwnx to fix them. Either way that is different issue.)