How to disguise a mob as another mob?

I was wondering if I could make a mod be disguised as another mob. For example, I built a witch hut and I would like a witch to live in the hut, move around, work in it, etc. Whenever I spawn a witch in the hut it despawns, so my idea was to spawn a villager in the hut and make it invisible while a witch is constantly teleported to it or attached to it in someway so it looks like the witch is living and doing stuff in the hut. Would there be anyway to do this? I am also on 1.15.2

Thanks

Edit: I know you can use a nametag to keep the witch from despawning, but I would rather see if this idea is a better way of solving my problem


Here's an easier way: When spawning the mob, use the tag {PersistenceRequired:1} to ensure it doesn't despawn.

Command: /summon minecraft:witch ~ ~ ~ {PersistenceRequired:1}

Disguising a mob like you're suggesting is an incredibly difficult and CPU-consuming method, and is very unlikely to work.