A carb cycling approach is probably the most effective way to get the best of both worlds, putting on lean muscle while minimizing fat gain. On workout days limit fat and pig out on "safe starches" (sweet potatoes, white rice, some fruit, etc.) and on non-workout days get most of your calories from fat. I wouldn't calorie restrict at all at your age and with your body type, just mess with the macro nutrient ratios a bit. And if you are a hard gainer, you really do have to eat a shit ton more than you think.