Is it possible configure the phone/lines/system to see that the agent is on a call on their primary line and skip over them on the next inbound queue call?
Unfortunately what your vendor is saying is absolutely correct, there is no way possible that UCCX can ignore presenting the call to an agent if they are talking on their primary line and their agent/IPCC line is in Ready state.The same is mentioned under Multiline Support section of the below Design Guide:
http://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cust_contact/contact_center/crs/express_11_0/design/guide/UCCX_BK_U3AF2742_00_unified-ccx-design-guide-11/UCCX_BK_U3AF2742_00_unified-ccx-design-guide-11_chapter_0101.html#UCCX_TP_C25088AB_00
As far as having two extensions are concerned, this is really more of a business decision since lot of companies do not want their agents extension to be exposed.
Regards
Deepak