There is no need to gain a lot of fat to gain muscle, gaining more fat than muscle means you're doing something very very wrong. Let's get you gaining with no or minimal fat gain first and then we can worry about recomposition.
First, increase your protein to 2g/per lb which is 375-400g protein. Include one red meat meal a day (as lean as you can afford, or buy the fattier stuff and rinse it) and 6 whole eggs (preferably raw in protein drinks).
Carbs should be tapered, more on workout days and less on offdays. You're still young so you can tolerate carbs better than most and your bodyfat is fairly low, so let's go with 200g on offdays, with the bulk of these over your first 3 meals of the day.
Training days should get 300g with most of these post-workout. Workout days you'll get more protein as well for obvious reasons.
Fats I'd keep at 100g daily with at least 15g of fish oil, and one tablespoon of olive oil. The rest you can get from eggs, meat, peanut butter etc.
Cardio should be done 4 days a week for now, 40-45 mins in the a.m. We're still experimenting here remember with how to get you gaining without gaining appreciable bodyfat. Once this is done we can play with carbs and cardio to get you losing bodyfat as well, but remember this will compromise muscle gain (it will be slower).
You should be on a basic routine, nothing fancy is needed at the moment. Show me your last three workouts with weights and reps/sets to see if you have any weak points which need addressing. (again, you can PM if you prefer)
Start a journal on here and log your daily diet as well as your workouts, plus your cardio. If you'd prefer to PM me with this info, that's fine too. I just want you to be accountable somehow which will keep you dedicated - not that I question your dedication, but EVERYONE gains better when they have a journal, trust me.