Firstly, you should talk to all your players about the issue outside of a session. You can get some personal impressions first with one-on-one conversations, but ultimately the entire group should sit down to discuss the problems. Make sure the discussion is democratic in nature, though. JohnP points this out in a related question: "The group setting can be dangerous, as it can turn into people digging up old grievances or ganging up on a particular person."
During the discussion you should ensure that everyone is on the same page about how they want the game to be played. The same page tool is a useful set of questions that will drive the discussion in the right direction. Just make sure everyone is fully involved in the discussion and are voicing their opinions clearly (no passive-aggressive bs). If your players are open to compromises a consensus should be reached.
Secondly, make sure your friend is not suffering from My Guy syndrome. If the description matches (and it sounds like it does), show her the link privately and let her think about it. It should help her be more aware of her role as a player and hopefully remedy some of the issues.
You also mentioned your player gets upset as a result of your decisions. This related question contains a lot of suggestions for how to handle players that take things personally, ranging from studying your own approach to kicking out the problematic player.
In the end, though, you are the GM. You are the writer of half of the story, the referee on all mechanics, and the leader in the quest for fun. The way you drive your campaign is part of your style and your players should respect it. They need to be aware that your goal is always to increase the enjoyment they collectively get out of your game. A certain level of trust and respect is absolutely necessary. If this is impossible to obtain in your group, then the group as it is cannot function. Kicking out players or stepping down as GM would be the next steps to try.
Because the GM is so special, though, new players often fail to grasp just how complex the GM role can be, and can at times see him as an enemy and spoilsport. A neat "trick" you can use to show your players what being a GM is really about (that also gives you some rest from the responsibility of being a GM) is to have another person in the group be the GM for a few sessions. It doesn't have to (and most often shouldn't) be the same campaign you're running. Instead, it can be a few sessions of an off-shoot campaign. It's fun for the players because they get the chance to try out new (and often times silly) character builds, and the new GM will discover what it feels to have all this responsibility. Once everyone has GM-ed a couple of sessions, you will all have an idea of who's best at it and will work towards keeping that person as GM in the future. There's a chance it might not be you, but in the end it should result in a better experience overall.
Keep in mind that not everyone is fit for GM-ing, or willing to try at all. Don't force players to GM, and if they decide to try, encourage them to design very short adventures (no more than three sessions). They can always expand on them later if they like it, or end them early if they don't. The player that questions your decisions often probably thinks they can do a better job, so they're likely to accept your offer to prove themselves.
Give the NPCs a title or nickname.
Your example already has one built in, rather than referring to him by his full name, Introduce him as Captain Rastafi ibn Halum, but have other NPCs refer to him as The Captain or Captain Halum. You'll give your players something they can grip easily and there is a better chance of them remembering the title and their first or last name rather than their full name.
For other characters lacking an official title or position, a nickname added to their name should help make them memorable. For example, lets say your example character did not have the title captain of the guard but was merely a guard the players had interacted with and would interact with again. Naming him Rastafi ibn Halum "The Bull" (maybe he has a large, imposing physique) could also help players remember the character.
Best Answer
Maybe player C likes player A as a DM more than he does with you. Maybe player A's npc has something more interesting to offer than player B or your NPCs.
Analyze why player A's NPCs are of some interest to player C's PC and build on it. Talking with the players might help you at being more efficient at this.