could it be a bug? possibly. 2010 was the first year of the curvature based mesh and that was 3 versions ago. are you guys on subscription? might be worth upgrading for solving this problem and all the new features that have been added. consider posting your model to have someone check it in a later version. or work with your reseller on that.
as for defining smaller contact areas, you've found the method, split lines. you don't necessarily have to make them the size of the button, you could make them just bands.
here are my suggestions:
1. try surface to surface and node to surface, it may make a difference
2. it looks like your part is all one body. consider breaking into multiple bodies. i THINK i remember an older version having some trouble with self contact.
3. improve the mesh in the area of contact, that may be part of the equation here.
4. try some other models, determine if this is really a software problem or a part specific problem
5. try different combinations of splitlines. swap the source and target, global vs contact sets.
6. switch between FFE and direct sparse. but in this case, DS is the right solver.
overall, your approach seems reasonable. so there may be an issue here. but like you've seen there are ways around it. and in this case it isn't a fact of results being wrong but rather that the automated contact definitions arent' working exactly correct. in other FE programs you'd have to build those connectinos by hand, so even with the workaround, you're far ahead.
also i want to make one comment about curvature based mesh. the mesher is faster in curvature mode (multi-threaded). but if you have the same number of DOF as a standard mesh, solve time will be the same. you are likely creating less elements if you're seeing faster solve time.