A few thoughts that may add to the already good advice here:
I hear that the size of migrant waves is increased by wealth production, and decreased by deaths (with noble deaths counting for a whole lot of deaths). So if the waves are too big, consider replacing your good bookkeeper with a random hauler, then killing the hauler-bookkeeper, and reassigning the good bookkeeper. Try doing it annually and see how much of an impact it has.
I'll echo that using the macros is essential. In particular, remember that macros apply to any kind of function in DF, not just mining. For some very common actions, like digging a 3x3 up/down stairway downwards a few levels, or making a diagonal 3-tile wide hallway in the 4 diagonal directions, or DEFINITELY the 'Enter+down'x15 macro for getting items to the Trade Depot and then trading things, I save macros. For lots of other things I just create and use macros on the spot without saving.
For example, with my latest population explosion, I made a macro that digs a 3x3 room out, then rests the cursor below it, so I could just spam ctrl+p and get a whole bunch of rooms in place, then make a few hallways connecting them. Once they were dug out, I made a macro that places a bed, a coffer, two cabinets, and a door, and rests the cursor in the bedroom below it. Again, spam ctrl-p. Finally once everythings in place, I make a similar macro that designates a room from each bed and spam again.
For finding gainful employment for them all, again, as said before, Dwarf Therapist is great. I'm really liking a custom job I made in DT that has all hauling labours + masonry on. The masonry isn't for making furniture (I have skilled masons for that, to do it faster and makes higher quality goods), but for all the outdoor construction/rewalling after digging a giant sunlight shaft/ etc. jobs I do, often with hundreds and hundreds of floor tiles to build at a time. I set all my mason workshops to only accept "Adequate" or higher skill levels, so the haulers don't waste time trying to craft things, and only my skilled mason's craft things there. Since constructing walls, floors, etc. doesn't yield experience, the haulers always stay at 0 mason experience (This is also useful as I set all the haulers to Armourer or Weaponsmith labours, and have my forges set up like the mason's workshops, except for one forge set only to accept Dabbling-Dabbling skill level, which makes bolts and caps. This way when a hauler moods, they make an Artifact weapon or armour if they have no other moodable skill levels). Masonry is something I never seem to have enough of, on account of all the stone furniture and big towers/floors I make, but with my construction haulers, it goes much, much faster.