I wonder whether you mixed up the terms "Proxy Entity" and "Custom Entity".
If AutoCAD can't find an Object Enabler for a Custom Entity class, it treats this unknown entity as a Proxy.
If you implement a Custom Entity class, than you write the Object Enabler yourself. And you can implement snap-methods in the entity class by overwriting the appropriate virtual methods:
// AcDbOsnapOverrule
virtual Acad::ErrorStatus subGetOsnapPoints(
AcDb::OsnapMode osnapMode,
Adesk::GsMarker gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray & geomIds) const;
virtual Acad::ErrorStatus subGetOsnapPoints(
AcDb::OsnapMode osnapMode,
Adesk::GsMarker gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray & geomIds,
const AcGeMatrix3d& insertionMat) const;
These will be called by AutoCAD, if your Object Enabler is loaded.
Thomas Brammer ● Software Developer ● imos AG ● LinkedIn ● 
If an answer solves your problem please [ACCEPT SOLUTION]. Otherwise explain why not.