I think this mechanic would work really well if factions were secret, and faction MEMBERS were secret. Of course, your spymaster could discover members of factions in his day-to-day operations, regardless of what his assigned task is, as he can discover factions regardless of if he's spying for you in Constantinople or in your land discouraging your most powerful vassal from joining factions against you.
The option should also exist if you are a member of a plot to "reveal faction" to your liege or the target of your faction. This would give you a major boost to relationship with your liege, and a major hit to your relationship with the leader of the faction, as well as a minor hit with other members of the faction.
Additionally, if we were to include Tyranny, the option should exist to specifically "reward loyalty". Just click the "reward loyalty" button and you have the options of "reward loyalty with gold", "reward loyalty with honorary titles", "reward loyalty with landed titles". Each of these would give a minor boost to the opinion of ALL vassals. Meanwhile there should also be a "punish disloyalty" for imprisoned vassals. "Punish with death", "punish with continued imprisonment", "punish with castration/blinding" (greeks/byzantines only), "punish with banishment", or "forgive disloyalty". The first three would increase fear and decrease opinion as per usual, the fourth would give you the usual gold bonus for banishment and decrease vassal opinion, and the fifth would DECREASE fear, but give a bonus to vassal opinion. (In addition to releasing the disloyal vassal from prison.)
Also, I think the addition of the "loyal" and "disloyal" traits wouldn't run amiss. A "loyal" character is likely to refuse to join factions, even if blackmailed into it, even if his opinion of the King is very low. "He may not be a great King, but he is my King," would be the response. Meanwhile, a "disloyal" vassal would be likely to join factions against you, even if his opinion of you is very high. "I like him, but he's not a great ruler," would be the response. This, of course leads to the "hidden" traits idea, or the following:
1) A vassal is neither loyal nor disloyal until such time as he is landed. (So you can't avoid landing disloyal nobles the way you can avoid landing ambitious nobles.
2) An event pops with a MTTH of 1 month where they can determine if they are loyal, neutral, or disloyal.
3) Should a vassal become someone else's vassal, their "loyal, neutral, disloyal" trait is removed, and the event is reset, again with a MTTH of 1 month.
Personally, I prefer the idea of hidden traits. You know certain traits of your vassals by reputation (and based on your realm intrigue), but you don't know everything about everyone on the map. Some of the traits you know may be false. (Ex. a noble is rumored to be a homosexual, but it turns out he isn't. Or a noble is said to be kind, but it turns out he's King Joffrey etc.) Again, the longer a noble rules, the more likely you are to learn their traits, as well as the higher ranking they are. An Emperor probably would not pay much attention to the traits of a mayor outside his demesne, but he would be likely to pay attention to the traits of a King.
I dunno... this would be complicated.... Maybe some of this could be implemented with CK3.