Oi Ayrton tudo bom?
Esse problema da foto rotacionada é bem comum.
Você pode usar a classe ExifInterface para descobrir a orientação e fazer a rotação na mão. Algo como:
ExifInterface exif = new ExifInterface(caminhoFoto);
String orientacao = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
Fazer um switch case para saber quantos graus precisa rotacionar:
switch (codigoOrientacao) {
    case ExifInterface.ORIENTATION_NORMAL:
        // rotacionar 0 graus
    case ExifInterface.ORIENTATION_ROTATE_90:
        // rotacionar 90 graus
    // mesma coisa para 180 e 270
}
E criar um novo bitmap na rotação que você precisa:
Matrix matrix = new Matrix();
matrix.postRotate(angulo);
Bitmap.createBitmap(bitmap, 0, 0,  bitmap.getWidth(), bitmap.getHeight(), matrix, true);
A questão da  foto sumir é porque toda vez que você muda a orientação, o layout da Activity é recriado, então você teria que chamar este código acima no onCreate da Activity.
Abraço!