As far as tweaking your existing model, if you draw in a couple of line segements on the top you can use Construct > Planar to build a top cap, I'd probably do that to start with, then the area where a "scoop out" is not behaving well seems to be here:
That surface kind of swoops outwards a way making a little slivery extension - this is the type of thing that can easily happen if you are trying to construct every single piece individually rather than using boolean or cutting operations to slice pieces off to some common outer boundary shape from the start.
To fix that up, you'll need to trim off the sticking out area, you can do that by selecting these 2 faces here and then running Edit > Separate to break them out from the main body so they are their own separate object for the moment:
Now with that separate piece (made up of 2 faces) selected, run Edit > Trim and at the first prompt to select cutting objects, select these edges on the top of your main body piece:
You can select planar curves as the cutting objects in Trim and it will automatically extrude them out internally. Then right-click or push "Done" to signal you are done picking cutting pieces and the Trim command will slice up the objects and the next prompt is to pick which fragments to discard. Pick this little excess piece here:
Then right-click or push "Done" to signal you are done picking pieces to discard and that will leave you with a better formed piece with the excess removed. Select the objects and run Edit > Join to glue them back together and then you can form a new planar surface to fill in the hole. I've attached a 3DM model file with this done to it and so there's only one hole area remaining to fill in.
But I hope it makes sense what I wrote about earlier, where you want to have more of the "outer block" of the object constructed as a solid to start with and then try to cut pieces off of that, that tends to be easier and especially with making pieces align with one another when they are all cut by one single common surface rather than all constructed by individual surfacing operations without any cutting happening.
Basically you don't want to avoid pieces sticking through each other - in fact in many cases you want to intentionally make things push through each other with plenty of extension on them and then slice those off using booleans. Or using trim - you can use booleans if you are working with solids, and trim if you are working with surfaces. The difference between them is basically booleans automatically decide which pieces to discard based on which volume they are contained inside of and automatically join the results together, that tends to make it convenient. With Trim you will have to manually pick which pieces to discard and do joining yourself, it involves more steps but allows you more level control as well. But if you are doing lots of trimming it tends to mean you are using a "patch by patch" type modeling strategy instead of a "solids and cutting" strategy which is where NURBS modeling tends to shine.
- Michael