1. Is it possible to know when the point addition process has gone outside of the field?
Implement a check before you do the modulus (I assume you made your own Point class) looking something like this:
x = # x point calculation
y = # y point calculation
if p.x > p_order: