I would replace the attack part with:
"Name two cards with cost five or less. All other players discard a card with that name, or reveal a hand with no matching cards. All other players draw up to five cards"
The "draw up to" is to limit the potential nastiness with militia of your version. The naming makes it less powerful against engines since you have to guess what they have in their hand, and it can't target gold anymore. You can still stack it (which I guess was what you were trying to do), but it won't hurt as much. Might want to increase the bonus though.
The problem with straight "look at your hand and you discard what I want" is how easily you can pin your opponent if you get your engine rolling, I agree that drawing only one card after the discard wouldn't be enough to balance the card... but obviously I can't be sure without actually playtesting the card.