Are you sure that you're successfully compiling the DLL, i.e. does any change that you make to the DLL code have any effect?
Crucially, you'd have to move m_pabHasTech, m_paiTechCount and m_paiResearchProgress from CvTeam to CvPlayer. However, tech affects a lot of cached effects, so you'd actually have to move about half of the CvTeam data members. (I wouldn't move them directly to CvPlayer, which is already an enormous catch-all class, but to a component class, say "TechState".) I'd say all the ones I've commented out in this list need to move:
And an even larger number of member functions (some exposed to and called from Python) operating on that data would have to move as well. A major effort, and one would need to understand roughly what all those variables do to get it right. Solid knowledge of C++ would really also seem necessary. Generally, team rules cut across the game logic, and changing them requires changes in numerous places.
I've implemented a research penalty when members of the same team are researching the same tech. Of course that falls far short of what you're trying to accomplish, but it's also vastly easier to implement, requiring changes only in CvPlayer::calculateResearchModifier and CvPlayerAI::AI_chooseResearch. (Research costs are already implemented at the level of players.)