A good option for this would be to use Sub Items (children) to store the Social data.
So you would create a new template with fields as @nathanhase mentioned, e.g.
SocialLink
with fields:
* SocialType - Droplink pointing at a set of lookup items to define the type, e.g. Twitter, Facebook etc...
* SocialLink - General Link field
* SocialIcon - Image field
Then you would create sub items of your Teacher
data item for each social account the teacher has.
This would work, but if you wanted to make it easier for content editors, you could use the Express Sub Item module from the market place. This module enables editing of child items from the parent.
You would get this type of effect (screen shots are pre sc8, but sc8.2 is supported):


This meets all your requirements mentioned above.