The discrete sign problem: uniqueness, recovery algorithms and phase retrieval applications