「氏」は、同属を表す呼称で、その一族が滅びないかぎり、新しく取り上げられたり、新しく与えられたりするものではありません。
その由来は多数あり、土地の名前をそのまま取ったもの(蘇我氏、葛城氏)、一族が担当した職業によってつけられたもの(中臣氏、物部氏)、などがあります。これらはもともと豪族の呼称がそのまま氏の名前になったもの(古代では、土地の名前がそのまま一族の名前になることが多かった)や最初の大和朝廷で担当していた仕事によりつけられたものでした。
また、大陸や朝鮮半島からの渡来人(彼らはさまざまな技術を持っているため重用された)が新しく氏をもらって一族を起こすことがありました。泰(はた)、狛(高麗、こま)、百済(くだら)、呉(くれ)といった、母国の名を氏にした例や従事していた職業によっても氏が与えられました。これが朝廷から与えられる氏の例になると思います。
一方、「姓」は氏族の尊卑または家柄を示し、その氏族の持つ職格をも表現していました。中央の有力豪族に与えられた臣・連、地方豪族に与えた君・直・造、渡来人に与えた首・史・忌寸など30余りありました。
姓は代々引き継がれ、一族に共通するものでした。姓には、貴称も蔑称もあり貰ってありがたくない姓もあったようです。
というわけで、氏(豪族)に姓(称号)を与えることにより朝廷への服属と、豪族間の格付けを行うことが氏姓制度の骨格になっています。
つまるところ、
「良い姓(身分)をあげるから、子々孫々までいうこと聞くんだよ」
とか、
「おまえのとこは長いこと逆らったから身分の低い姓しかやらん」
とかやったわけですね。