The method described in the original post is something one would learn the first day of a beginner's course in CMM programming. Creating a coordinate system on a part using a plane and two holes. Many CMM softwares have built-in routines for doing this exact thing.
Using the same feature twice is not the problem. One circle is being used to define an origin point, the other is defining an axis direction. That in itself is fine.
The problem is that the method is based on a very small number of randomly chosen points on each feature. The coordinate system will generally have good repeatability but poor reproducibility. In other words, the coordinate system created by Inspector 1's program will be different than the one created by Inspector 2's program because they each chose different points on the features. But both programs will be very consistent on multiples runs on the same part.
Also, the coordinate system that one would get using this method is different from the datum reference frame one would get using strict Y14.5 principles (high point planes, orientation constrained maximum inscribed cylinders, etc.).
The magnitude of the difference is related to the amount of form and orientation error in the plane and holes. If this error is small compared to the position tolerance, 3-point planes and circles can be a workable approximation.
If the form and orientation error in the datum features is significant, the 3-point planes and circles can cause massive inconsistencies. This is why the example parts in CMM training courses always have datum features with extremely good flatness and cylindricity!
Evan Janeshewski
Axymetrix Quality Engineering Inc.