Are you using your own warehouse, or an external one?
Most will batch-sort for you, at a cost 
It can certainly be done though - we're at around 2000 products, with incoming orders ranging from a single box through to full containers. One thing you could look at is controlling it at the front end; we stipulate a maximum of two batches per delivery unless prior agreement has been obtained, and indeed a growing number of our customers won't accept mixed batches unless on clearly marked separate pallets, and even then they often set a maximum of two per delivery.
I'd definitely agree with (1), but I'd also want to physically check the batch codes when it arrives - you're probably doing this anyway as part of the "have we got the right product, has any of it been damaged etc" checks on receipt anyway?
For (2) I'd personally greatly prefer a batch code per supplier batch, as it is then easier to track things like individual best before dates, generate delivery notes for customers etc - if your business is growing then you'll find that as you land larger clients they get more fussy about this sort of thing, and it's usually easier to design it in at the outset. Nonetheless there isn't necessarily a "right" answer, so you've got to go with what works for you.
The question for (2)/(3) is then which batch code (yours, or the supplier's) are you using to pick/dispatch? If it's yours, then you just need to remember that under your proposal this links to several supplier batches, so in the event of a problem/recall you'll have to call back more stock than the batch that is actually affected/implicated. Again not necessarily a problem and this is an approach I've seen businesses use.
For (4) I fully agree with you. Customers give us all sorts of useless references numbers for this - their own booking in / rotation number, their stock code etc., all of which are meaningless since we can't see their system, so I always ask for actual confirmation of the batch number that is physically written on the label.
You mention "typing in" the batch code, so just be aware that if this happens at multiple points in your system then it will cause errors where you get entries that don't match - humans are fallible 
If you're proficient with MS Access or Excel you can possibly build yourself a basic database or a few spreadsheets so that people can "pick" stock and have the details automatically copied across. If macros and Visual Basic aren't your thing then you can possibly still set up your records in a way that means people can copy/paste the correct details from original entries into sales/dispatch records rather than having to manually re-enter them, as this should reduce the opportunity for errors to creep in.