Since your object seems not to be moving most of the time, you may still use an IMU using the following assumption :
If the object is not accelerating and approximately not moving during a long time, then it's probably not moving at all.
Then, use an IMU and check for this condition ; as soon as this condition is detected, consider the position to be that at the beginning of the static phase until acceleration is detected. This effectively zeroes out the drift bias during all immobility phases.
That's simple programming, rather power-efficient, and very robust to interference if the above assumption is valid.