EDIT: Tragedy! My initial assumptions were incorrect! (Or in doubt, at least -- do you trust what the seller is telling you? Still, hat tip to Morten, as well.) Which I guess is another good introduction to statistics, but The Partial Sheet Approach is now added below (since people seemed to like the Whole Sheet one, and maybe somebody will still find it useful).
First of all, great problem. But I'd like to make it a little more complicated.
Because of that, before I do, let me make it a little simpler, and say -- the method you're using right now is perfectly reasonable. It's cheap it's easy it makes sense. So if you have to stick with it, you shouldn't feel bad. Just make sure you choose your bundles randomly. AND, if you can just weigh everything reliably (hat tip to whuber and user777), then you should do that.
The reason I want to make it a little more complicated though is that you already have -- you just haven't told us about the whole complication, which is that -- counting takes time, and time is money too. But how much? Maybe it actually is cheaper to count everything!
So what you're really doing is balancing the time it takes to count, with the amount of money you're saving. (IF, of course, you only play this game once. NEXT time you have this happen with the seller, they may have caught on, and tried a new trick. In game theory, this is the difference between Single Shot Games, and Iterated Games. But for now, let's pretend the seller will always do the same thing.)
One more thing before I get to the estimation though. (And, sorry to have written so much and still not gotten to the answer, but then, that's a pretty good answer to What would a statistician do? They would spend a huge amount of time making sure they understood every tiny part of the problem before they were comfortable saying anything about it.) And that thing is an insight based on the following:
(EDIT: IF THEY'RE ACTUALLY CHEATING ...) Your seller doesn't save money by removing labels -- they save money by not printing sheets. They can't sell your labels to somebody else (I assume). And maybe, I don't know and I don't know if you do, they can't print half a sheet of your stuff, and half a sheet of somebody else's. In other words, before you've even started counting, you can assume that the total number of labels is either 9000, 9100, ... 9900, or 10,000
. That's how I'll approach it, for now.
The Whole Sheet Method
When a problem is a little tricky like this one (discrete, and bounded), a lot of statisticians will simulate what might happen. Here's what I simulated:
# The number of sheets they used
sheets <- sample(90:100, 1)
# The base counts for the stacks
stacks <- rep(90, 100)
# The remaining labels are distributed randomly over the stacks
for(i in 1:((sheets-90)*100)){
bucket <- sample(which(stacks!=100),1)
stacks[bucket] <- stacks[bucket] + 1
}
This gives you, assuming they're using whole sheets, and your assumptions are correct, a possible distribution of your labels (in the programming language R).
Then I did this:
alpha = 0.05/2
for(i in 4:20){
s <- replicate(1000, mean(sample(stacks, i)))
print(round(quantile(s, probs=c(alpha, 1-alpha)), 3))
}
This finds, using a "bootstrap" method, confidence intervals using 4, 5, ... 20 samples. In other words, On average, if you were to use N samples, how big would your confidence interval be? I use this to find an interval that's small enough to decide on the number of sheets, and that's my answer.
By "small enough," I mean my 95% confidence interval has only one whole number in it -- e.g. if my confidence interval was from [93.1, 94.7], then I would choose 94 as the correct number of sheets, since we know it's a whole number.
ANOTHER difficulty though -- your confidence depends on the truth. If you have 90 sheets, and every pile has 90 labels, then you converge really fast. Same with 100 sheets. So I looked at 95 sheets, where there is the greatest uncertainty, and found that to have 95% certainty, you need about 15 samples, on average. So let's say overall, you want to take 15 samples, because you never know what's really there.
AFTER you know how many samples you need, you know that your expected savings are:
$100N_{missing} - 15c$
where $c$ is the cost of counting one stack. If you assume that there's an equal chance of every number between 0 and 10 being missing, then your expected savings are $500 - 15*$c$. But, and here's the point of making the equation -- you could also optimize it, to trade off your confidence, for the number of samples you need. If you're okay with the confidence that 5 samples gives you, then you can also calculate how much you'll make there. (And you can play with this code, to figure that out.)
But you should also charge the guy for making you do all this work!
(EDIT: ADDED!) The Partial Sheet Approach
Okay, so let's assume what the manufacturer is saying is true, and it's not intentional -- a few labels are just lost in every sheet. You still want to know, About how many labels, overall?
This problem is different because you no longer have a nice clean decision that you can make -- that was an advantage to the Whole Sheet assumption. Before, there were only 11 possible answers -- now, there are 1100, and getting a 95% confidence interval on exactly how many labels there are is probably going to take a lot more samples than you want. So, let's see if we can think about about this differently.
Because this is really about you making a decision, we're still missing a few parameters -- how much money are you willing to lose, in a single deal, and how much money it costs to count one stack. But let me set up what you could do, with those numbers.
Simulating again (although props to user777 if you can do it without!), it's informative to look at the size of the intervals when using different numbers of samples. That can be done like this:
stacks <- 90 + round(10*runif(100))
q <- array(dim=c(17,2))
for(i in 4:20){
s <- replicate(1000, mean(sample(stacks, i)))
q[i-3,] <- quantile(s, probs=c(.025, .975))
}
plot(q[,1], ylim=c(90,100))
points(q[,2])
Which assumes (this time) that each stack has a uniformly random number of labels between 90 and 100, and gives you:

Of course, if things were really like they've been simulated, the true mean would be around 95 samples per stack, which is lower than what the truth appears to be -- this is one argument in fact for the Bayesian approach. But, it gives you a useful sense of how much more certain you're becoming about your answer, as you continue to sample -- and you can now explicitly trade off the cost of sampling with whatever deal you come to about pricing.
Which I know by now, we're all really curious to hear about.