Store RAM and PROGMEM strings in one variable
Is there a type that I can give to my strings variable that allows me to store both types of strings?


No, but you could tag the pointer or add a vector with type information or ultimately use a class hierarchy (BaseString&lt;-SRAMString, PROMEMString).  

As a pointer is 16-bit (Arduino Uno) and there is limited amount of SRAM it is possible to add a magic number to pointers to determine the address space.  

Obviously the print() member function will have to use the right type and you will also need a new addString for F() strings. Check how F() is defined. 

Cheers!