I am working on a similar problem and decided to try and fix the "Cow". Your suggestion of eliminating the self intersecting boundary curves doesn't completely solve the problem with DiscretizeGraphics or BoundaryDiscretizeGraphics on the "Cow" example model.
After using the following routines to iteratively select out the 83 intersecting facets:
pts=ExampleData[{"Geometry3D","Cow"}, "VertexData"];
facets=Partition[ExampleData[{"Geometry3D","Cow"}, "PolygonData"],1];getIntersect:=intersect={#}&/@TetGenDetectIntersectingFacets[pts, facets][[2]];
getFacet:=facets=Select[facets,!MemberQ[intersect,#]&];
cow = Graphics3D[GraphicsComplex[pts, Polygon[Flatten[facets, 1]]]]
Attempting to TetGenTetrahedralize cow, we get:
TetGenTetrahedralize::reterr: Tetrahedralize returned an error, 3. >>
Some of this problem is simply due to the deletion of facets leaving holes in the mesh. So after an export to .STL and filling the holes (using MeshLab), the DiscretizeGraphics on the import then throws a different error 2.
This seem to have gotten fixed in version 10.2, which now successfully imports the fixed .STL with the BoundaryMeshRegion option:
mr=Import["cowtest.stl", "BoundaryMeshRegion"]
uif@mr
BTW - there are 2 interesting facets that are not part of the set of 83 intersecting ones. They are in the tail of the cow that throw the following errors (until they are cleaned up):
BoundaryMeshRegion::bcsm: There is a closed curve or surface that does not include all cells specified for a boundary. A boundary should consist of a single closed curve or surface. >>
Unfortunately, my 10.2 version doesn't load the ExampleData[{"Geometry3D", "Cow"}] (this may be a problem with my install or a bug, not sure).
Nevertheless, I have attached a fixed .STL version of the cow (sans tail).
Attachments: