Can be common with almost anything that uses pointers.
Most likely you have pointers to pointers/nested pointers/double pointers. Not really ideal for things to be coded that way and mostly seen in exam questions for new C programmers (wherein they might stack 20 or so up with some other things to make sure people really understand pointers) but far from unknown to those making cheats
(where it can even be a type of anti cheat) or playing ROM hacker.
Try redoubling your efforts but using the pointers you found as the address base for a new search for new pointers (in effect the pointers you have now become the thing you tell the pointer finding program is the location of the memory value you care about/cheat value). If they hold between boots that often then chances are it is not going to be more than this*, though it is not impossible.
*The general idea is the program needs memory to store something so it asks the system which gives some over, needing a pointer to keep track of it, program needs more memory so more requested and another pointer generated, third section needed so another pointer, in another boot the previously third section just so happens to be requested before the previously second (maybe it is a menu and you were faster on the button this time and it loaded in before the music or something) and thus ends up in a different area. So far so standard how pointers work, if however the previously third section also has some code associated that requests yet another area of memory (maybe the menu has a sub menu that is loaded when needed rather than always) it might end up in a different location between boots if the previously third section ends up in different places with different things coming after it (thousands of sections of memory might be asked for and released per second).