OK, so the problem is that there has to be Risk vs. Reward. Make it too easy and people take advantage, too hard and it cuts off advancement and frustrates the player and they leave the
game. A very interesting problem but something game designers have delt with for litteraly thousands of years.

Scouts depend on stealth, being unseen to complete thier mission of information gathering and more importantly, bringing that information back. I would think that they need to slow down drasticly to do this, therfore that might be the remedy to this, ie; slow them down from 3000 to something like 500. They are on foot after all, and shouldn't be faster the Cavalry anyways.

Cavalry are then the new unit of choice to do this kind of spam attack. I'd have to ask then, why not? They move at 1000, fast yes, but it would be minutes instead of seconds for travel times.They are not cheap to make or to maintain so there is a cost in the use of them. Real Cavalry have been used in this way, raiding and doing spoiling attacks, for a long time so there is even historical president in it. Ab's are easy to make, and they stop Cav just fine.

Medals then become the problem, or is it we're not looking at what they are? A Medal is given to someone who earns it. We've been seeing them as just items to use for our advancements. They should be rewards for something done, not an every-time expected token that means nothing. I don't know if you could do this but why not link Prestige and Honor to the combat system? By that I mean a player with below 2500 Prestige and 1000 honor is given a much bigger chance to earn a Medal if he attackes then someone with 100,000 & 50,000. The exception to this would, of course, be what the player is attacking. An example; player A is has 1500 Prestige and 0 honor, he attackas a level 4 Valley with a level 5 Hero. The game then does its combat in the same way it does now, however, when it calculates for medals it looks at WHO attacked and WHAT was sent. Perhaps there are critical numbers where no medal at all is give, and some where it would always happen. If player B, who has played for several months and has over 150K in prestige, attacks a level 1 Valley with 90,000 troops, he should never expect to get a Medal, ever.

On to the last problem of "Its to hard to take Castles". Well of course it's suposed to be hard! You're trying to take away something another player has built, sometimes for weeks or even months of invested time, and you want it to be easy? It shouldn't be easy but then again it also shouldn't be clearly impossible eather. The combat system for the taking of Castles should be changed a bit. Now, I am not a programer but I can see some things in the game that would allow another type of attack, The Siege. Why not have the Camp funtion used to lay Siege to another persons Castle?
A Besieged Castle would not have acsess to its production of resources as they are outside the walls. Stockpiles of food would drop as the population and garrison consume them, eventually lowering the Loyalty to a point where they have no choice but to surender.
This brings in several other things that would maybe make the game more complex but it would also add vast layers of depth to it.
Perhaps the Garrison can Sally, attacking the besiegeing troops.
Sending Relief Troops by another alliance member means they attack the Besiegers.
Maybe the level of Heros can come into play as a higher Mayor might be able to smuggle a percentage of food and supplies into the city.This could also be a Tech to research.

I will think on this some more, I'd like to hear some feedback on this.