Many milling tools are used in more than one way. A square ended mill, for example, is used for milling something flat, and the sides of said cutter for milling profiles., or all at once for making slots. That is not a compromise, it is using the tool as intended. If you are out on a limb, then perhaps you have to design your own tool. All tools originated by someone solving a problem.
Unfortunately, Everything in engineering, and life in general, is a compromise, you've got to find the ones you're happy with, and work from there. I believe you are suffering from 'the not invented here syndrome', nothing being any use unless you've invented it, it fits exactly into your mind set. If the tool does not do what you want, then why mess around with the carbide3d? Get yourself some proper joinery machinery. If I wanted to make decent jointed boxes, that is possibly the compromise I would make, balancing time against cash and workshop space, whatever.
If you're accepting the compromise of shallow depth 3 axis machining, then the only way you can cut any surface, and undercut, on five sides at one hit is with a ball ended milling cutter (not a bull nosed but something like this
http://cnc-plus.de/images/product_images/info_images/2974_2.jpg and then you live with a smoothish finish, but no sharp edges.to the bottom of any recesses. If you want undercutting then use a T slot cutter, or a dovetail cutter, or similar, but that is accepting the compromise that it will only give straight smooth edges, but at restricted angles. If you want square edges and corners, then the morticer is the tool to use. All the above is accepting the compromise of not refixing the workpiece in some other orientation, or changing the tooling part way through the job.
It doesn't matter what fancy g-code/cad/cam/machine you use, at the end, it depends on the tool profile, its strength, etc. I'm not convinced you have specified what it is you are trying to achieve in enough detail for me to be able to offer much practical advice, except before getting bogged down in AngelCad/Openscad/whatever theory, I would suggest you get some bits of wood, and drive the router manually, to see if you can actually get the fit you want with the tooling that you have.
Why not start with something simple, let's say milling a 20mm cube? I guess your carbide3d machine can handle that. Making it from a 20mm thick piece of timber, clamped well out of the way of the area you are working on. What do you want to happen? Draw a 20mm cube in AngelCad, then generate the G-code somehow from that? Or, are you going to draw a 30mm cuboid, 20mm high, and let the 10mm cutter follow the path in the xy plain, and hope it can cope with a single 20mm depth of cut, or somehow 'it' will know that 20mm in z means 5 passes, say? Neither of these approaches is a Cad problem, it's not difficult to draw either size of cube/oid. OK, having decided that, how do you cope with a 20mm square hole (forget about the rounded corners), pocketing, say 10mm deep? Do you draw a cube 20mm square, knowing that the cutter has a square end - how is that be communicated between the cad and machine- or do you draw it as a 20mm cuboid, again 10mm deep, and communicate that it must cut on the inside of the line.
Many types of cnc machines rely on colour of line to define depth, laser cutters, switching from cut power to etching. There are plenty of cnc sort of raster programs, that can take a greyscale image, and machine to different depths depending on the shade of grey. Maybe, you could manually shade your pocketed regions - but that would not be automatic, unless you added some extra code to AngelCad, but you'd have to get used to the (void main int thing), and I feel your pain there XD
(one day, I'll write a short, non confrontational post.)