First of all English is not my native language and I'll try my best to explain how to get this working.
So after a few days of discovering how does GTAV handl its stuff I came up with this:
If you change active character to any model, active model hash will change to hash that based on its name.
That's why game treats you an NPC when you change player to an NPC model.
Hashes are generated by the game within a name and they are used by game scripts.
So the only way to make game treat your active model as a character you want is to change a generated hash to the hash of the character.
You will need:
List of hashes: http://lexicongta.com/res/npcs.txt
Let's say you want game to treat S_F_Y_STRIPPER_02 as a PLAYER_TWO (Trevor)
S_F_Y_STRIPPER_02 hex hash is 0x6E0FB794
PLAYER_TWO hex hash is 0x9B810FA2
Change your player model to S_F_Y_STRIPPER_02.
Using Cheat Engine search for 6E0FB794 hex value.
After getting a list with found addresses try to change values to 9B810FA2 (Trevor's hash) one by one until you find the right address.
You can quickly check if game treats you as Trevor by Pressing M. Menu will become orange styled and titled "Trevor".
After that change all other values back to default 6E0FB794.
That's it. Your model can now do whatever Trevor can.
There are some noted bugs with clothes and facial animations in some cutscenes. Save/load also causes a minor clothing bug.
Doing this every time with a Cheat Engine is a little bit complicated. It'd be nice to have a simpler way.
Anyways though I hope you could understand my broken English. And thanks for all community to let me figure this out.
Here is a short video: