Hi Ben,
Jean-Paul is giving good advice regarding the need to delete reference to datum feature B from the position call-outs on the holes, [A,D] is all you need, unless you want to constrain the remaining translation by referencing C as well, so [A,D,C] might be a good way to go.
The way you had datum feature B labeled was correct in the first place (as Jean-Paul also pointed out). Per Y14.5-1982 the datum feature symbol is placed by a size dimension in order to specify that the center plane of the datum feature simulator is the datum.
While not an explicit method from Y14.5, I would place a "2X" beside the datum feature A symbol, to help clarify that you want both of the bottom planar surfaces used when datum A is established.
I would consider a datum target for C, but not because it will improved measurement repeatability... Datum targets should be specified when they better capture the functional requirements/design intent of a datum feature. In this case much of datum feature C is not touching anything. While it may be adequate to specify a single datum target point C1, that point may not be the high point within the contact area of the mating part. Since the point of the tolerance specifications is to address functional requirements, you could consider specifying a circular area as datum target C1 over the footprint of the mating part. The highest point within the datum target area C1, would then need to be found when establishing the datum reference frame. The approach for C1 depends upon how imperfect datum feature C is and how tight the tolerances affected by the final translation constraint are... For this part, with the tight perpendicularity, so also flatness, control on datum feature C and nothing much toleranced in the direction normal to C, a single point as datum target C1 placed somewhere within the contact area of C's mating part should work fine (so, my recommendation for C1 is the same as Jeff recommended, but I prefer using different reasoning).
I hope this helps.
Dean